IP Library › Granted Patent US 9,529,636
Granted Patent B2
US 9,529,636 · App. 12/412,272 · Granted Dec 27, 2016

System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine

Inventor: Jacob Oshins (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/5077G06F9/455G06F9/45558G06F9/5016G06F9/5088G06F12/0284G06F2009/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,529,636
App. No.
12/412,272
Granted
Dec 27, 2016
Kind
B2
Abstract

Techniques for effectuating a virtual Non-Uniform Memory Architecture (NUMA) for virtual machines and adjusting memory in virtual NUMA nodes are described. The virtual NUMA node topology may include a plurality of virtual NUMA nodes. The memory may be adjusted based on pressure in a specific virtual NUMA node of the plurality and an amount of guest memory assigned to the specific virtual NUMA node.

Claims (56)

1. A method, comprising:

receiving a request to instantiate a virtual machine, the request including a characteristic for the virtual machine;

selecting a virtual Non-Uniform Memory Architecture (NUMA) node topology for the virtual machine based on the characteristic, the virtual NUMA node topology including a plurality of virtual NUMA nodes;

instantiating the virtual machine on a computer system, the virtual machine including the plurality of virtual NUMA nodes; and

adjusting, based at least in part on memory pressure in a specific virtual NUMA node of the plurality of virtual NUMA nodes, an amount of guest memory assigned to the specific virtual NUMA node by a second amount of guest memory, the second amount of guest memory being exchanged between the specific virtual NUMA node and a second virtual NUMA node of the plurality of virtual NUMA nodes based at least in part on memory pressure in the second virtual NUMA node.

2. The method of claim 1 , further comprising:

determining that the memory pressure in the second virtual NUMA node of the plurality of virtual NUMA nodes is greater than a predetermined value; and

migrating the second virtual NUMA node to a second NUMA node of the computer system.

3. The method of claim 1 , wherein adjusting the amount of guest memory by a second amount of guest memory further comprises:

de-committing at least one memory block of guest memory from the specific virtual NUMA node; and

committing the at least one de-committed memory block of guest memory to the second virtual NUMA node.

4. The method of claim 1 , wherein adjusting the amount of guest memory by a second amount of guest memory further comprises:

determining that at least one block of guest memory of the specific virtual NUMA node is dissociated with system memory; and

mapping the at least one memory block of guest memory onto at least one memory block of system memory.

5. The method of claim 1 , further comprising:

mapping the specific virtual NUMA node onto a first NUMA node of the computer system; and

migrating the specific virtual NUMA node onto a second NUMA node of the computer system.

6. The method of claim 1 , further comprising:

adding a virtual processor to the specific virtual NUMA node.

7. The method of claim 1 , further comprising:

receiving a request to execute a virtual processor of the virtual machine, the virtual processor assigned to a logical processor, the logical processor assigned to a NUMA node and the virtual processor assigned to one of the plurality of virtual NUMA nodes;

determining that the logical processor cannot execute the virtual processor; and

selecting a second logical processor to execute the virtual processor, the second logical processor from another NUMA node.

8. A computer system, comprising:

circuitry for executing a virtual machine, the virtual machine having a topology that includes a plurality of virtual Non-Uniform Memory Architecture (NUMA) nodes;

circuitry for determining memory pressure in each virtual NUMA node of the plurality of virtual NUMA nodes; and

circuitry for adjusting, based at least in part on the determined memory pressure in a specific virtual NUMA node of the plurality of virtual NUMA nodes, guest memory assigned to the specific virtual NUMA node by a second amount of guest memory, the second amount of guest memory being exchanged between the specific virtual NUMA node and another virtual NUMA node of the plurality of virtual NUMA nodes based at least in part on the determined memory pressure in the another virtual NUMA node.

9. The computer system of claim 8 , further comprising:

circuitry for sending the virtual machine to a second computer system.

10. The computer system of claim 8 , further comprising:

circuitry for mapping a first virtual NUMA node of the plurality of virtual NUMA nodes onto a first NUMA node of the computer system; and

circuitry for mapping a second virtual NUMA node of the plurality of virtual NUMA nodes onto the first NUMA node of the computer system.

11. The computer system of claim 8 , further comprising:

circuitry for mapping a first virtual NUMA node of the plurality of virtual NUMA nodes onto a first NUMA node of the computer system; and

circuitry for mapping a second virtual NUMA node of the plurality of virtual NUMA nodes onto a second NUMA node of the computer system.

12. The computer system of claim 10 , further comprising:

circuitry for determining that memory pressure in the second virtual NUMA node is greater than a predetermined value; and

circuitry for migrating the second virtual NUMA node to a second NUMA node of the computer system.

13. The computer system of claim 11 , further comprising:

circuitry for determining that memory pressure of the second virtual NUMA node is greater than a predetermined value; and

circuitry for migrating the second virtual NUMA node of the virtual machine to the first NUMA node of the computer system.

14. A memory device including processor-executable instructions, the memory device comprising:

instructions for executing a first virtual machine, the first virtual machine having a topology that includes a plurality of virtual Non-Uniform Memory Architecture (NUMA) nodes, each virtual NUMA node of the plurality of virtual NUMA nodes including a virtual processor and guest physical addresses, the topology of the first virtual machine that includes the plurality of virtual NUMA nodes being independent of whether a physical topology of a computer system executing the virtual machine comprises physical NUMA nodes;

instructions for adding an additional virtual processor to a virtual NUMA node of the plurality of virtual NUMA nodes during a runtime execution of the first virtual machine;

instructions for determining memory pressure in the plurality of virtual NUMA nodes; and

instructions for adjusting, based at least in part on the determined memory pressure in a specific virtual NUMA node of the plurality of virtual NUMA nodes, guest memory assigned to the specific virtual NUMA node by a second amount of guest memory, the second amount of guest memory being exchanged between the specific virtual NUMA node and another virtual NUMA node of the plurality of virtual NUMA nodes based at least in part on the determined memory pressure in the another virtual NUMA node.

15. The memory device of claim 14 , further comprising:

instructions for removing a virtual processor from a virtual NUMA node of the plurality of virtual NUMA nodes.

16. The memory device of claim 14 , further comprising:

instructions for reporting NUMA ratios for the plurality of virtual NUMA nodes to a guest operating system.

17. The memory device of claim 14 , further comprising:

instructions for migrating the virtual machine from a first NUMA node to a plurality of NUMA nodes.

18. The memory device of claim 14 , wherein the instructions for adjusting the guest memory further comprise:

instructions for de-committing memory from a first virtual NUMA node of the plurality of virtual NUMA nodes based on a determination that the current memory pressure of the first virtual NUMA node is lower than a target threshold.

19. The memory device of claim 14 , wherein the instructions for adjusting the guest memory further comprise:

instructions for committing memory to a first virtual NUMA node of the plurality of virtual NUMA nodes based on a determination that the current memory pressure of a guest operating system is greater than a target 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 Feb 17, 2010
From: OSHINS, JACOB
To: MICROSOFT CORPORATION
Reel/Frame 023946/0691 →
Continuity (1)
Related Publication 20100250868A1 · Sep 30, 2010