IP Library Granted Patent US 12,254,342
Granted Patent B2
US 12,254,342 · App. 18/431,833 · Granted Mar 18, 2025

Placing virtual graphics processing unit (GPU)-configured virtual machines on physical GPUs supporting multiple virtual GPU profiles

Inventors: Akshay Bhandari (Bangalore, IN); Nidhin Urmese (Bangalore, IN)
Assignee: VMWare LLC
G06F9/45558G06T1/20G06T1/60G06F2009/4557G06F2009/45583
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 12,254,342
App. No.
18/431,833
Granted
Mar 18, 2025
Kind
B2
Abstract

In one set of embodiments, a computer system can receive a request to provision a virtual machine (VM) in a host cluster, where the VM is associated with a virtual graphics processing unit (GPU) profile indicating a desired or required framebuffer memory size of a virtual GPU of the VM. In response, the computer system can execute an algorithm that identifies, from among a plurality of physical GPUs installed in the host cluster, a physical GPU on which the VM may be placed, where the identified physical GPU has sufficient free framebuffer memory to accommodate the desired or required framebuffer memory size, and where the algorithm allows multiple VMs associated with different virtual GPU profiles to be placed on a single physical GPU in the plurality of physical GPUs. The computer system can then place the VM on the identified physical GPU.

Claims (36)

1. A method comprising:

receiving a request to provision a first virtual machine (VM) in a host cluster, the host cluster comprising a first graphics processing unit (GPU) and a second GPU, the first VM being associated with a first virtual GPU profile indicating at least a first metric; and

in response to receiving the request to provision the VM in the host cluster:

placing the first VM on the first GPU, wherein the first GPU satisfies at least the first metric, and wherein the first GPU has placed thereon a second VM, the second VM being associated with a second virtual GPU profile indicating a second metric, the first virtual GPU profile being different than the second virtual GPU profile; and

executing the first VM on the first GPU.

2. The method of claim 1 , wherein during the executing, the first VM uses a portion of a free framebuffer memory of the first GPU, the portion being equal to the first metric indicating a framebuffer memory size.

3. The method of claim 1 , wherein the first GPU and the second GPU have a same GPU model or architecture.

4. The method of claim 3 , further comprising storing a database of available GPUs in a memory.

5. The method of claim 1 , wherein the first GPU and the second GPU have different GPU models or architectures, and wherein the second GPU has a priority value corresponding to its GPU model or architecture.

6. The method of claim 5 , wherein the first GPU has a priority value corresponding to its GPU model or architecture.

7. The method of claim 1 , wherein the first GPU and the second GPU each have a respective framebuffer memory.

8. A computer system comprising:

memory configured to store a database of available graphics processing units (GPUs), the available GPUs including a first graphics processing unit (GPU) and a second GPU;

a network interface configured to receive a request to provision a first virtual machine (VM) in a host cluster, the host cluster comprising the first GPU and the second GPU, the first VM being associated with a first virtual GPU profile indicating at least a first metric; and

a processor configured, in response to the network interface receiving the request to provision the VM in the host cluster, to:

place the first VM on the first GPU, wherein the first GPU satisfies at least the first metric, and wherein the first GPU has placed thereon a second VM, the second VM being associated with a second virtual GPU profile indicating a second metric, the first virtual GPU profile being different than the second virtual GPU profile; and

execute the first VM on the first GPU.

9. The computer system of claim 8 , wherein during the execution, the first VM uses a portion of a free framebuffer memory of the first GPU, the portion being equal to the first metric indicating a framebuffer memory size.

10. The computer system of claim 8 , wherein the network interface is connected to the host cluster.

11. The computer system of claim 8 , wherein the host cluster further comprises a hypervisor.

12. The computer system of claim 8 , wherein the first GPU and the second GPU have different GPU models or architectures, and wherein the second GPU has a priority value corresponding to its GPU model or architecture.

13. The computer system of claim 12 , wherein the first GPU has a priority value corresponding to its GPU model or architecture.

14. The computer system of claim 8 , wherein the first GPU and the second GPU have a same GPU model or architecture.

15. A computer system comprising:

a processor;

a memory configured to store a database of available graphics processing units (GPUs); and

a non-transitory computer readable medium having stored thereon program code that, when executed by the processor, causes the processor to:

receive a request to provision a first virtual machine (VM) in a host cluster, the host cluster comprising a first graphics processing unit (GPU) and a second GPU, the first VM being associated with a first virtual GPU profile indicating at least a first metric; and

in response to receiving the request to provision the VM in the host cluster:

place the first VM on the first GPU, wherein the first GPU satisfies at least the first metric, and wherein the first GPU has placed thereon a second VM, the second VM being associated with a second virtual GPU profile indicating a second metric, the first virtual GPU profile being different than the second virtual GPU profile; and

execute the first VM on the first GPU.

16. The computer system of claim 15 , wherein during the execution, the first VM uses a portion of a free framebuffer memory of the first GPU, the portion being equal to the first metric indicating a framebuffer memory size.

17. The computer system of claim 15 , wherein the first GPU and the second GPU have a same GPU model or architecture.

18. The computer system of claim 15 , wherein the first GPU and the second GPU have different GPU models or architectures, and wherein the second GPU has a priority value corresponding to its GPU model or architecture.

19. The computer system of claim 18 , wherein the first GPU has a priority value corresponding to its GPU model or architecture.

20. The computer system of claim 19 wherein the first GPU and the second GPU each have a respective framebuffer memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2024
From: BHANDARI, AKSHAY; URMESE, NIDHIN
To: VMWARE, INC.
Reel/Frame 068321/0607 →
CHANGE OF NAME Recorded Aug 19, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 068686/0803 →
Priority Claims (1)
IN 202041056899 · Dec 29, 2020 · national
Continuity (2)
Continuation 17176223 · Feb 16, 2021
Related Publication 20240176643A1 · May 30, 2024
References Cited (34)
US 10176550B1 · Baggerman · 2019 [cited by examiner]
US 20070083785A1 · Sutardja · 2007 [cited by applicant]
US 20080140921A1 · Sutardja et al. · 2008 [cited by applicant]
US 20100033120A1 · Wang · 2010 [cited by applicant]
US 20130148947A1 · Glen et al. · 2013 [cited by applicant]
US 20130155083A1 · McKenzie et al. · 2013 [cited by applicant]
US 20140176583A1 · Abiezzi et al. · 2014 [cited by applicant]
US 20140181806A1 · Abiezzi et al. · 2014 [cited by applicant]
US 20140181807A1 · Fonesca et al. · 2014 [cited by applicant]
US 20150049094A1 · Yan et al. · 2015 [cited by applicant]
US 20150105148A1 · Consul et al. · 2015 [cited by applicant]
US 20150371355A1 · Chen · 2015 [cited by applicant]
US 20160189332A1 · Yoo et al. · 2016 [cited by applicant]
US 20160239441A1 · Chun et al. · 2016 [cited by applicant]
US 20180060996A1 · Tunuguntla et al. · 2018 [cited by applicant]
US 20180130171A1 · Prakash et al. · 2018 [cited by applicant]
US 20180204301A1 · Featonby et al. · 2018 [cited by applicant]
US 20190019267A1 · Suresh · 2019 [cited by applicant]
US 20190102212A1 · Bhandari · 2019 [cited by examiner]
US 20190139185A1 · Baggerman · 2019 [cited by examiner]
US 20190155660A1 · McQuighan et al. · 2019 [cited by applicant]
US 20190347137A1 · Sivaraman · 2019 [cited by examiner]
US 20200387393A1 · Xu · 2020 [cited by examiner]
US 20210011751A1 · Garg · 2021 [cited by examiner]
US 20210011773A1 · Garg · 2021 [cited by examiner]
US 20210026672A1 · Kurkure · 2021 [cited by examiner]
US 20210110506A1 · Prakash · 2021 [cited by examiner]
US 20210263779A1 · Haghighat et al. · 2021 [cited by applicant]
Chen, H. et al., GaaS Workload Characterization Under NUMA Architecture for Virtualized GPU, In 2017 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS), IEEE, 2017, pp. 65-76. [cited by applicant]
Garg, A. et al., Empirical Analysis of Hardware-Assisted GPU Virtualization, In 2019 IEEE 26th International Conference on High Performance Computing, Data, and Analytics (HiPC), IEEE, 2019, pp. 395-405. [cited by applicant]
Garg, A. et al., Virtual Machine Placement Solution for vGPU Enabled Clouds, In 2019 International Conference on High Performance Computing & Simulation (HPCS), IEEE, 2019, pp. 897-903. [cited by applicant]
Herrera, A., NVIDIA Grid vGPU: Delivering Scalable Graphics-Rich Virtual Desktops, Whitepaper, Jun. 2015, 8 pages. [cited by applicant]
Kurkure, U. et al., Virtualized GPUs in High Performance Datacenters, In 2018 International Conference on High Performance Computing & Simulation (HPCS), IEEE, 2018, pp. 887-894. [cited by applicant]
Sivaraman, H. et al., Task Assignment in a Virtualized GPU Enabled Cloud, In 2018 International Conference on High Performance Computing & Simulation (HPCS), IEEE, 2018, pp. 895-900. [cited by applicant]
Cited By (1)
US 12,613,749