IP Library Granted Patent US 11,334,380
Granted Patent B2
US 11,334,380 · App. 16/698,994 · Granted May 17, 2022

Remote memory in hypervisor

Inventors: Marcos Aguilera (Palo Alto, CA); Keerthi Kumar (Bangalore, IN); Pramod Kumar (Bangalore, IN); Arun Ramanathan (Palo Alto, CA); Pratap Subrahmanyam (Palo Alto, CA); Sairam Veeraswamy (Bangalore, IN); Rajesh Venkatasubramanian (Palo Alto, CA); Manish Mishra (Bangalore, IN)
Assignee: VMWARE, INC.
G06F9/45558G06F3/0607G06F3/067G06F3/0658G06F12/1009G06F16/907G06F2009/4557G06F2009/45583G06F2209/5011
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 11,334,380
App. No.
16/698,994
Granted
May 17, 2022
Kind
B2
Abstract

The disclosure provides an approach for creating a pool of memory out of local memories of host machines, and providing that pool for the hosts to use. The pool is managed by a controller that keeps track of memory usage and allocated memory among hosts. The controller allocates or reclaims memory between hosts, as needed by the hosts. Memory allocated from a second host to a first host may then be divided into smaller portions by the first host, and further allocated to virtual machines executing within the first host.

Claims (43)

1. A method of obtaining memory for use by a first host, the method comprising:

determining a second host that is capable of providing memory for use by the first host;

obtaining a region of memory from the second host for use by the first host, wherein the region of memory is local to the first host and wherein obtaining the region of memory from the second host comprises reclaiming, by the first host, the region of memory from use by the second host;

updating a first memory metadata to indicate that the region of memory has been obtained from the second host for use by the first host;

dividing, by the first host, the obtained region of memory into one or more sub-portions; and

allocating the one or more sub-portions for use by one or more virtual computing instances (VCIs) executing on the first host.

2. The method of claim 1 , the method further comprising, prior to the determining:

booting up the first host and instantiating the one or more VCIs on the first host;

obtaining metadata associated with memory usage of the first host, wherein the obtained metadata comprises an amount of memory the first host has available and the amount of memory the first host is using; and

updating the first memory metadata to add the obtained metadata.

3. The method of claim 2 , the method further comprising polling the first host and the second host to obtain updated memory metadata.

4. The method of claim 1 , wherein the first host uses the obtained region of memory as a cache for memory pages, the method further comprising:

executing, by the first host, a cache algorithm to swap the memory pages among a tier of memory devices, the tier of memory devices comprising one or more of a device with dynamic random access memory (DRAM), flash memory, redundant arrays of independent disks (RAIDs), magnetic tape storage, non-volatile memory, persistent memory, phase-change memory, ferroelectric RAM, magnetoresistive RAM, or micro-electro-mechanical systems memory.

5. The method of claim 4 , wherein the cache algorithm is executed by a virtualization software of the first host, wherein the one or more VCIs are virtualized by the virtualization software.

6. The method of claim 1 , wherein the obtained region of memory is used exclusively by the first host.

7. The method of claim 1 , wherein the updating the first memory metadata is performed by a central controller software executing within a data center, wherein the central controller software uses the first memory metadata to track allocation of memory to hosts within the data center.

8. The method of claim 1 , wherein the obtained region of memory is accessible using direct addressing.

9. A non-transitory computer readable medium comprising instructions to be executed in a processor of a computer system, the instructions when executed in the processor cause the computer system to carry out a method of obtaining memory for use by a first host, the method comprising:

determining a second host that is capable of providing memory for use by the first host;

obtaining a region of memory from the second host for use by the first host, wherein the region of memory is local to the first host, and wherein obtaining the region of memory from the second host comprises reclaiming, by the first host, the region of memory from use by the second host;

updating a first memory metadata to indicate that the region of memory has been obtained from the second host for use by the first host;

dividing, by the first host, the obtained region of memory into one or more sub-portions; and

allocating the one or more sub-portions for use by one or more virtual computing instances (VCIs) executing on the first host.

10. The non-transitory computer readable medium of claim 9 , the method further comprising, prior to the determining:

booting up the first host and instantiating the one or more VCIs on the first host;

obtaining metadata associated with memory usage of the first host, wherein the obtained metadata comprises an amount of memory the first host has available and the amount of memory the first host is using; and

updating the first memory metadata to add the obtained metadata.

11. The non-transitory computer readable medium of claim 10 , the method further comprising polling the first host and the second host to obtain updated memory metadata.

12. The non-transitory computer readable medium of claim 9 , wherein the first host uses the obtained region of memory as a cache for memory pages, the method further comprising:

executing, by the first host, a cache algorithm to swap the memory pages among a tier of memory devices, the tier of memory devices comprising one or more of a device with dynamic random access memory (DRAM), flash memory, redundant arrays of independent disks (RAIDs), magnetic tape storage, non-volatile memory, persistent memory, phase-change memory, ferroelectric RAM, magnetoresistive RAM, or micro-electro-mechanical systems memory.

13. The non-transitory computer readable medium of claim 12 , wherein the cache algorithm is executed by a virtualization software of the first host, wherein the one or more VCIs are virtualized by the virtualization software.

14. The non-transitory computer readable medium of claim 9 , wherein the obtained region of memory is used exclusively by the first host.

15. The non-transitory computer readable medium of claim 9 , wherein the updating the first memory metadata is performed by a central controller software executing within a data center, wherein the central controller software uses the first memory metadata to track allocation of memory to hosts within the data center.

16. A computer system comprising:

a first host;

one or more virtual computing instances (VCIs) executing on the first host;

a second host;

a processor, wherein the processor is programmed to carry out a method of obtaining memory for use by the first host, the method comprising:

determining the second host is capable of providing memory for use by the first host;

obtaining a region of memory from the second host for use by the first host wherein the region of memory is local to the first host, and wherein obtaining the region of memory from the second host comprises reclaiming, by the first host, the region of memory from use by the second host;

updating a first memory metadata to indicate that the region of memory has been obtained from the second host for use by the first host;

dividing, by the first host, the obtained region of memory into one or more sub-portions; and

allocating the one or more sub-portions for use by the one or more VCIs executing on the first host.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2019
From: AGUILERA, MARCOS; KUMAR, KEERTHI; KUMAR, PRAMOD; RAMANATHAN, ARUN; SUBRAHMANYAM, PRATAP; VEERASWAMY, SAIRAM; VENKATASUBRAMANIAN, RAJESH; MISHRA, MANISH
To: VMWARE, INC.
Reel/Frame 051134/0779 →
Priority Claims (1)
IN 201941028622 · Jul 16, 2019 · national
Continuity (1)
Related Publication 20210019168A1 · Jan 21, 2021