IP Library › Granted Patent US 8,887,172
Granted Patent B2
US 8,887,172 · App. 12/651,260 · Granted Nov 11, 2014

Virtualized management of remote presentation sessions using virtual machines having load above or below thresholds

Inventors: Ara Bernardi (Mercer Island, WA); Nelamangal Krishnaswamy Srinivas (Sammamish, WA); Manoj Patra (Gachibowli, IN); Arvind Kandhare (Gachibowli, IN); Shivesh Ranjan (Gachibowli, IN)
Assignee: Microsoft Corporation
G06F9/505H04L67/2809G06F9/5083G06F9/4445G06F9/5077G06F2009/4557
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,887,172
App. No.
12/651,260
Granted
Nov 11, 2014
Kind
B2
Abstract

Systems, methods, and computer-readable storage media are disclosed for virtualized eco-friendly remote presentation session roles. In an embodiment, a connection broker monitors the servers of a server farm, and, based upon characteristics of remote presentation sessions served by VMs executing on those servers, directs VMs on those servers to be migrated between servers, changed from sleeping to running or vice versa, or other operations that may improve the performance of the server farm as a whole.

Claims (100)

1. A method for managing a plurality of hosts, the plurality of hosts configured to execute a plurality of virtual machines (VMs), a VM being configured to serve a remote presentation session, comprising:

receiving a request to connect a client to a remote presentation session;

making a first determination that no VM of the plurality of VMs is both set to accept remote presentation session connections and has a load less than a first threshold indicative of a level of computer resource usage above which remote presentation sessions should not be added;

identifying, in response to the first determination, a subset of the plurality of VMs, each VM of the subset being set to a drain state indicative of allowing the VM of the subset to enter a sleep state;

identifying a first VM in the subset having a highest load of VMs in the subset;

setting the first VM to accept remote presentation session connections;

sending the first VM an indication to conduct the remote presentation session with the client;

receiving a request to connect a second remote presentation session; and

sending a second VM an indication to conduct the second remote presentation session upon determining that no VM of the plurality of VMs has a load below the first threshold and determining that a second VM of the plurality of VMs has a lowest load above the first threshold.

2. The method of claim 1 , further comprising:

receiving a request to connect to a second remote presentation session;

determining that a host of the plurality of hosts has a highest load below a second threshold below the first threshold, the host configured to execute a second VM of the plurality of VMs; and

sending the second VM an indication to conduct the second remote presentation session.

3. The method of claim 1 , further comprising:

receiving a request to connect a second remote presentation session;

determining that no VM of the subset of VMs of the plurality of VMs that are set to refuse connections may be set to accept connections;

determining that a second VM of the plurality of VMs can accept a load of the second remote presentation session, the second VM being in a sleeping state;

waking the second VM; and

sending the second VM an indication to conduct the second remote presentation session.

4. The method of claim 1 , further comprising:

receiving a request to connect a second remote presentation session;

determining that the request to connect a second remote presentation session corresponds to a disconnected remote presentation session conducted by a second VM of the plurality of VMs;

determining that the second VM is running; and

sending the second VM an indication to conduct the second remote presentation session.

5. The method of claim 1 , further comprising:

receiving a request to connect a second remote presentation session;

determining that the request to connect to a second remote presentation session corresponds to a disconnected remote presentation session conducted by a second VM of the plurality of VMs;

determining that the second VM is in a saved state;

determining that a physical host of the second VM has available load to execute the second VM;

waking the second VM; and

sending the second VM an indication to conduct the second remote presentation session.

6. The method of claim 1 , further comprising:

receiving a request to connect a second remote presentation session;

determining that the request to connect to a second remote presentation session corresponds to a disconnected remote presentation session conducted by a second VM of the plurality of VMs;

determining that the second VM is in a saved state;

determining that a physical host of the second VM lacks available load to execute the second VM;

identifying a third VM of the plurality of VMs, the identifying based at least in part on the third VM operating on a host having a highest load among hosts in the plurality of hosts that have a load below a second threshold, the second threshold below the first threshold and indicative of running the third VM in a low power state; and

sending the third VM an indication to conduct the second remote presentation session.

7. The method of claim 1 , further comprising:

determining that a state of a second VM of the plurality of VMs is incorrect based on a load of the second VM; and

changing the state of the second VM.

8. The method of claim 7 , further comprising:

receiving an indication of the load of the second VM from a virtual machine monitor (VMM) that manages the execution of the second VM.

9. The method of claim 8 , wherein the VMM monitors the load of the second VM based on a system call made from the second VM to a host on which the second VM and the VMM execute.

10. The method of claim 8 , wherein the VMM monitors the load of the second VM by querying the second VM for the load.

11. A system for managing a plurality of hosts, the plurality of hosts configured to execute a plurality of virtual machines (VMs), a VM being configured to serve a remote presentation session, comprising:

a processor; and

a memory bearing processor executable instructions that, upon execution by the processor, cause the system at least to:

receive a request to connect a client to a remote presentation session;

make a first determination that no VM of the plurality of VMs is both set to accept remote presentation session connections and has a load less than a first threshold indicative of a level of computer resource usage above which remote presentation sessions should not be added;

identify, in response to the first determination, a subset of the plurality of VMs, each VM of the subset being set to a drain state indicative of allowing the VM of the subset to enter a sleep state;

identify a first VM in the subset having a highest load of VMs in the subset;

set the first VM to accept remote presentation session connections;

send the first VM an indication to conduct the remote presentation session with the client;

receive a request to connect a second remote presentation session; and

send a second VM an indication to conduct the second remote presentation session upon determining that no VM of the plurality of VMs has a load below the first threshold and determining that a second VM of the plurality of VMs has a lowest load above the first threshold.

12. The system of claim 11 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

receive a request to connect to a second remote presentation session;

determine that a host of the plurality of hosts has a highest load below a second threshold below the first threshold, the host configured to execute a second VM of the plurality of VMs; and

send the second VM an indication to conduct the second remote presentation session.

13. The system of claim 11 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

receive a request to connect a second remote presentation session;

determine that no VM of the subset of VMs of the plurality of VMs that are set to refuse connections may be set to accept connections;

determine that a second VM of the plurality of VMs can accept a load of the second remote presentation session, the second VM being in a sleeping state;

wake the second VM; and

send the second VM an indication to conduct the second remote presentation session.

14. The system of claim 11 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

receive a request to connect a second remote presentation session;

determine that the request to connect a second remote presentation session corresponds to a disconnected remote presentation session conducted by a second VM of the plurality of VMs;

determine that the second VM is running; and

send the second VM an indication to conduct the second remote presentation session.

15. The system of claim 11 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

receive a request to connect a second remote presentation session;

determine that the request to connect to a second remote presentation session corresponds to a disconnected remote presentation session conducted by a second VM of the plurality of VMs;

determine that the second VM is in a saved state;

determine that a physical host of the second VM has available load to execute the second VM;

wake the second VM; and

send the second VM an indication to conduct the second remote presentation session.

16. The system of claim 11 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

receive a request to connect a second remote presentation session;

determine that the request to connect to a second remote presentation session corresponds to a disconnected remote presentation session conducted by a second VM of the plurality of VMs;

determine that the second VM is in a saved state;

determine that a physical host of the second VM lacks available load to execute the second VM;

identify a third VM of the plurality of VMs, the identifying based at least in part on the third VM operating on a host having a highest load among hosts in the plurality of hosts that have a load below a second threshold, the second threshold below the first threshold and indicative of running the third VM in a low power state; and

send the third VM an indication to conduct the second remote presentation session.

17. The system of claim 11 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

determine that a state of a second VM of the plurality of VMs is incorrect based on a load of the second VM; and

change the state of the second VM.

18. The system of claim 17 , wherein the memory further bears instructions that, upon execution by the processor, cause the system at least to:

receive an indication of the load of the second VM from a virtual machine monitor (VMM) that manages the execution of the second VM.

19. The system of claim 18 , wherein the VMM monitors the load of the second VM based on a system call made from the second VM to a host on which the second VM and the VMM execute.

20. A computer-readable storage medium, excluding propagation media, bearing computer-executable instructions that, upon execution by a computer, cause the computer to perform operations comprising:

receiving a request to connect a client to a remote presentation session;

making a first determination that no VM of the plurality of VMs is both set to accept remote presentation session connections and has a load less than a first threshold indicative of a level of computer resource usage above which remote presentation sessions should not be added;

identifying, in response to the first determination, a subset of the plurality of VMs, each VM of the subset being set to a drain state indicative of allowing the VM of the subset to enter a sleep state;

identifying a first VM in the subset having a highest load of VMs in the subset;

setting the first VM to accept remote presentation session connections;

sending the first VM an indication to conduct the remote presentation session with the client;

receiving a request to connect a second remote presentation session; and

sending a second VM an indication to conduct the second remote presentation session upon determining that no VM of the plurality of VMs has a load below the first threshold and determining that a second VM of the plurality of VMs has a lowest load above the first threshold.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2010
From: BERNARDI, ARA; SRINIVAS, NELAMANGAL KRISHNASWAMY; PATRA, MANOJ; KANDHARE, ARVIND; RANJAN, SHIVESH
To: MICROSOFT CORPORATION
Reel/Frame 023873/0807 →
Continuity (1)
Related Publication 20110161957A1 · Jun 30, 2011