IP Library › Granted Patent US 9,069,622
Granted Patent B2
US 9,069,622 · App. 12/895,605 · Granted Jun 30, 2015

Techniques for load balancing GPU enabled virtual machines

Inventors: Bradley Stephen Post (San Francisco, CA); Varadharajan Ponnappan (Sunnyvale, CA); Pareekshit Singh (Sunnyvale, CA); Winston Matthew Penfold Johnston (San Jose, CA); Eric Kai-hau Han (Sunnyvale, CA); Parag Chakraborty (Sunnyvale, CA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F9/5088G06F2009/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 9,069,622
App. No.
12/895,605
Granted
Jun 30, 2015
Kind
B2
Abstract

Exemplary techniques for balancing 3D graphical processor unit use among virtual machines are herein disclosed. In an exemplary embodiment, a virtualization platform can load an instance of a graphics rendering module for a virtual machine; select a GPU for the graphics rendering module to run on; and configure the virtual machine to render to the selected GPU. In addition to the foregoing, other aspects are described in the detailed description, claims, and figures.

Claims (51)

1. A computer system configured to balance graphics processor use among virtual machines, comprising:

a processor;

a first 3D graphics processing unit;

a second 3D graphics processing unit; and

a memory in communication with at least the processor when the computer system is operational, the memory having stored thereon computer readable instructions that upon execution cause the processor to:

assign a group of virtual machines to render 3D graphics on the first 3D graphics processing unit;

determine that the first 3D graphics processing unit is overcommitted based on at least an amount of time the first 3D graphics processing unit takes to respond to commands; and

move a first virtual machine from the group of virtual machines to the second graphics processing unit in response to at least the determination that the first 3D graphics processing unit is overcommitted.

2. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to move the first virtual machine to the second graphics processing unit further comprise computer readable instructions that upon execution cause the processor to:

move the first virtual machine to the second graphics processing unit in response to determining that an estimated amount of available graphics memory controlled by the second graphics processing unit is greater than a threshold.

3. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to determine that the first 3D graphics processing unit is overcommitted further comprise computer readable instructions that upon execution cause the processor to:

determine the first 3D graphics processing unit is overcommitted based on an average latency of direct memory access transactions initiated by the first virtual machine.

4. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to move the first virtual machine to the second graphics processing unit further comprise computer readable instructions that upon execution cause the processor to:

move the first virtual machine in response to determining that average latency of direct memory access transactions for a second virtual machine assigned to the second graphics processing unit is less than a threshold.

5. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to move the first virtual machine to the second graphics processing unit further comprise computer readable instructions that upon execution cause the processor to:

move the first virtual machine in response to determining that a number of virtual machines assigned to the second graphics processing unit is less than a threshold.

6. The computer system of claim 1 , wherein the computer readable instructions further comprise computer readable instructions that upon execution cause the processor to:

determine features of the first graphics processing unit and the second graphics processing unit.

7. A computer-readable memory device including computer-readable instructions for balancing graphics processing unit use among virtual machines, the computer-readable storage medium comprising instructions that upon execution by a processor cause the processor to:

receive a request to assign a first virtual machine to a first 3D graphics processing unit;

estimate an amount of graphics memory utilized to render 3D graphics for the first virtual machine;

select the first 3D graphics processing unit from a plurality of 3D graphics processing units in response to determining that latency values associated direct memory access transactions issued by a group of virtual machines assigned to render graphics on the first 3D graphics processing unit are less than a first threshold and that the estimated amount of graphics memory utilized to render 3D graphics is less than a second threshold; and

assign the first virtual machine to render 3D graphics on the first 3D graphics processing unit.

8. The computer-readable memory device of claim 7 , wherein the computer readable instructions that upon execution cause the processor to:

estimate an amount of graphics memory utilized to render 3D graphics for the first virtual machine from at least information that identifies pixel dimensions for each virtual machine in the group.

9. The computer-readable memory device of claim 7 , wherein the computer readable instructions that upon execution cause the processor to:

estimate an amount of graphics memory utilized to render 3D graphics for the first virtual machine from at least information that identifies a compression ratio used by the first 3D graphics processing unit.

10. The computer readable memory device of claim 7 , wherein the computer readable instructions that upon execution cause the processor to:

estimate an amount of graphics memory utilized to render 3D graphics for the first virtual machine from at least information that identifies an estimated number of surfaces to be rendered for the first virtual machine.

11. The computer-readable memory device of claim 7 , wherein the computer readable instructions that upon execution cause the processor to select the first 3D graphics processing unit comprise computer readable instructions that upon execution cause the processor to:

select the first 3D graphics processing unit from the plurality of 3D graphics processing units in response to determining that a latency of at least one command issued by a graphics kernel is less than a third threshold.

12. The computer-readable memory device of claim 7 , wherein the computer readable instructions that upon execution cause the processor to select the first 3D graphics processing unit comprise computer readable instructions that upon execution cause the processor to:

select the first 3D graphics processing unit from the plurality of 3D graphics processing units in response to determining that a number of virtual machines currently assigned to the first 3D graphics processing unit is less than a forth threshold.

13. A method for balancing load across graphic processing units, comprising:

estimating at least an amount of graphics memory utilized to render graphics for a virtual machine;

comparing the estimated amount of graphics memory to estimated amounts of available graphics memory controlled by a plurality of 3D graphics processing units on the same computing device;

selecting a 3D graphics processing unit from the plurality of 3D graphics processing units to render 3D graphics for the virtual machine in accordance with the comparison;

assigning the selected 3D graphics processing unit to render 3D graphics for the virtual machine; and

moving the virtual machine to a second graphics processing unit in response to determining that the selected 3D graphics processing unit is overcommitted based on at least a latency of direct memory access graphics transactions initiated by the virtual machine.

14. The method of claim 13 , further comprising:

moving the virtual machine to a second graphics processing unit in response to determining that the 3D graphics processing unit is overcommitted based on at least an average latency of graphics commands issued by a graphics kernel to the 3D graphics processing unit.

15. The method of claim 13 , further comprising:

determining a number of virtual machines currently assigned to the selected 3D graphics processing unit is less than a threshold.

16. The method of claim 13 , further comprising:

determining hardware features of each 3D graphics processing unit in plurality of 3D graphics processing units.

17. The method of claim 13 , further comprising:

estimating an amount of graphics memory utilized to render 3D graphics for the virtual machine from at least information that identifies pixel dimensions for the virtual machine.

18. The method of claim 13 , further comprising:

estimating an amount of graphics memory utilized to render 3D graphics for the virtual machine from at least information that identifies a compression ratio used by the selected 3D graphics processing unit.

19. The method of claim 13 , further comprising:

estimating an amount of graphics memory utilized to render 3D graphics for the virtual machine from at least information that identifies an estimated number of surfaces to be rendered for the virtual machine.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 8, 2010
From: POST, BRADLEY STEPHEN; PONNAPPAN, VARADHARAJAN; SINGH, PAREEKSHIT; JOHNSTON, WINSTON MATTHEW PENFOLD; HAN, ERIC KAI-HAU; CHAKRABORTY, PARAG
To: MICROSOFT CORPORATION
Reel/Frame 025320/0086 →
Continuity (1)
Related Publication 20120084774A1 · Apr 5, 2012