Abstract:
Systems and methods are described for providing ways to optimize client performance during screen data streaming. Periods of time a client takes to render frames can be tracked and the frame rendering times can be analyzed to determine when the client performance is insufficient. If the client rendering performance is determined to be insufficient, the encoding method can be dynamically modified in ways preferable for improving the client rendering performance. Different approaches can be utilized for calculating metrics and determining when to modify the encoding method, such as linear interpolation or by taking averages of frame rendering times in a moving sample window.
Abstract:
Systems and methods are described for adjusting streaming of screen data from a server to a client based on visibility of the window in which the screen data is presented on the client. Visibility of a window in the graphical user interface (GUI) can be monitored, for example by detecting when the window is minimized or obscured by other objects in the GUI, and the streaming of screen data to the window can be dynamically adjusted based on the window visibility. When the window is minimized or fully obscured, the streaming of screen data can be stopped. When the window is partially obscured, the streaming can be modified such as by decreasing the frame rate.
Abstract:
Methods, techniques, and systems for dynamically allocating graphics processing units among virtual machines are provided. Example embodiments provide a dynamic GPU allocation system (“DGAS”), which enables the efficient allocation of physical GPU resources to one or more virtual machines. In one embodiment, the DGAS comprises virtualization logic running on a server computing system that computes GPU benefit factors for the virtual machines on a dynamic basis, and combines the computed GBFs with static priorities to determine a ranked ordering of virtual machines. The available GPU resources are then allocated to some subset of these ranked virtual machines as physical GPU capacity is matched with the requirements of the subset. Physical GPU resources are then allocated to the subset of virtual machines that have the highest promise of GPU utilization.