IP Library Granted Patent US 12,086,469
Granted Patent B2
US 12,086,469 · App. 18/312,987 · Granted Sep 10, 2024

Resiliency and performance for cluster memory

Inventors: Marcos K. Aguilera (Mountain View, CA); Keerthi Kumar (Bangalore, IN); Pramod Kumar (Bangalore, IN); Pratap Subrahmanyam (Saratoga, CA); Sairam Veeraswamy (Coimbatore, IN); Rajesh Venkatasubramanian (Palo Alto, CA)
Assignee: VMware LLC
G06F3/0659G06F3/0604G06F3/061G06F3/0631G06F3/067
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,086,469
App. No.
18/312,987
Granted
Sep 10, 2024
Kind
B2
Abstract

Disclosed are various embodiments for improving the resiliency and performance for clustered memory. A computing device can mark a page of the memory as being reclaimed. The computing device can then set the page of the memory as read-only. Next, the computing device can submit a write request for the contents of the page to individual ones of a plurality of memory hosts. Subsequently, the computing device can receive individual confirmations of a successful write of the page from the individual ones of the plurality of memory hosts. Then, the computing device can mark the page as free in response to receipt of the individual confirmations of the successful write from the individual ones of the plurality of memory hosts.

Claims (73)

1. A system, comprising:

a computing device comprising a processor and a memory; and

machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to at least:

receive a page fault notification for a page stored by a memory host;

allocate a page in the memory for the page stored by the memory host;

identify the memory host storing the page;

identify resource constraints associated with the page stored by the memory host;

execute a read operation to retrieve the page stored by the memory host based at least in part on the resource constraints;

receive contents of the page stored by the memory host; and

copy the contents to the page in the memory.

2. The system of claim 1 , wherein the machine-readable instructions that cause the computing device to identify resource constraints associated with the page stored by the memory host further cause the computing device to at least:

evaluate a local chunk map to determine an amount of cluster memory allocated by the memory host being consumed;

in response to the amount of cluster memory allocated exceeding a predetermined threshold, identify the cluster memory as resource constrained;

evaluate a degree to which a network interface is utilized to determine whether a network connection to the memory host has sufficient available bandwidth; and

in response to the available bandwidth of the connection being insufficient, identify the available bandwidth as resource constrained.

3. The system of claim 2 , wherein the memory host comprises a plurality of memory hosts and when the cluster memory is resource constrained and the available bandwidth is not resource constrained, the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

read or copy the page from a first memory host of the plurality of memory hosts; and

send a message to the plurality of memory hosts that the page could be freed from cluster memory.

4. The system of claim 2 , wherein the memory host comprises a plurality of memory hosts and when the cluster memory is not resource constrained and the available bandwidth is resource constrained, the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

copy the page from one of the plurality of memory hosts; and

send a message to the plurality of memory hosts not to free the page from cluster memory.

5. The system of claim 2 , wherein the memory host comprises a plurality of memory hosts and when the cluster memory is resource constrained and the available bandwidth is resource constrained, the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

instruct a portion of the plurality of memory hosts to free the page from cluster memory to increase the amount of cluster memory available to the plurality of memory hosts and reduce the amount of bandwidth needed to copy the page from the memory back to the plurality of memory hosts.

6. The system of claim 1 , wherein the machine-readable instructions that cause the computing device to allocate the page in the memory for the page stored by the memory host, when executed by the processor, further cause the computing device to at least evict or reclaim a page in the memory for the page stored by the memory host.

7. The system of claim 1 , wherein the machine-readable instructions that cause the computing device to receive the contents of the page stored by the memory host and copy the contents to the page in the memory, when executed by the processor, further cause the computing device to at least update a page table to reflect the allocation of the page in the memory.

8. A method implemented by a computer, comprising:

receiving a page fault notification for a page stored by a memory host;

allocating a page in the memory for the page stored by the memory host;

identifying the memory host storing the page;

identifying resource constraints associated with the page stored by the memory host;

executing a read operation to retrieve the page stored by the memory host based at least in part on the resource constraints;

receiving contents of the page stored by the memory host; and

copying the contents to the page in the memory.

9. The method implemented by the computer of claim 8 , wherein identifying resource constraints associated with the page stored by the memory host further comprises:

evaluating a local chunk map to determine an amount of cluster memory allocated by the memory host being consumed; and

in response to the amount of cluster memory allocated exceeding a predetermined threshold, identifying the cluster memory as resource constrained; and

evaluating a degree to which a network interface is utilized to determine whether a network connection to the memory host has sufficient available bandwidth; and

in response to the available bandwidth of the connection being insufficient, identifying the available bandwidth as resource constrained.

10. The method implemented by the computer of claim 9 , wherein the memory host comprises a plurality of memory hosts and when the cluster memory is resource constrained and the available bandwidth is not resource constrained, the method further comprises:

reading or copying the page from a first memory host of the plurality of memory hosts; and

sending a message to the plurality of memory hosts that the page could be freed from cluster memory.

11. The method implemented by the computer of claim 9 , wherein the memory host comprises a plurality of memory hosts and when the cluster memory is not resource constrained and the available bandwidth is resource constrained, the method further comprises:

copy the page from one of the plurality of memory hosts; and

send a message to the plurality of memory hosts not to free the page from cluster memory.

12. The method implemented by the computer of claim 9 , wherein the memory host comprises a plurality of memory hosts and when the cluster memory is resource constrained and the available bandwidth is resource constrained, the method further comprises:

instructing a portion of the plurality of memory hosts to free the page from cluster memory to increase the amount of cluster memory available to the plurality of memory hosts and reduce the amount of bandwidth needed to copy the page from the memory back to the plurality of memory hosts.

13. The method implemented by the computer of claim 8 , wherein allocating the page in the memory for the page stored by the memory host further comprises:

evicting or reclaiming a page in the memory for the page stored by the memory host.

14. The method implemented by the computer of claim 8 , wherein receiving the contents of the page stored by the memory host and copy the contents to the page in the memory further comprises:

updating a page table to reflect the allocation of the page in the memory.

15. A non-transitory, computer-readable medium comprising machine-readable instructions that, when executed by a processor of a computing device, cause the computing device to at least:

receive a page fault notification for a page stored by a memory host;

allocate a page in the memory for the page stored by the memory host;

identify the memory host storing the page;

identify resource constraints associated with the page stored by the memory host;

execute a read operation to retrieve the page stored by the memory host based at least in part on the resource constraints;

receive contents of the page stored by the memory host; and

copy the contents to the page in the memory.

16. The non-transitory, computer-readable medium of claim 15 , wherein the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

evaluate a local chunk map to determine an amount of cluster memory allocated by the memory host being consumed; and

in response to the amount of cluster memory allocated exceeding a predetermined threshold, identify the cluster memory as resource constrained; and

evaluate a degree to which a network interface is utilized to determine whether a network connection to the memory host has sufficient available bandwidth; and

in response to the available bandwidth of the connection being insufficient, identify the available bandwidth as resource constrained.

17. The non-transitory, computer-readable medium of claim 16 , wherein the memory host comprises a plurality of memory hosts and the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

read or copy the page from a first memory host of the plurality of memory hosts; and

send a message to the plurality of memory hosts that the page could be freed from cluster memory.

18. The non-transitory, computer-readable medium of claim 16 , wherein the memory host comprises a plurality of memory hosts and the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

copy the page from one of the plurality of memory hosts; and

send a message to the plurality of memory hosts not to free the page from cluster memory.

19. The non-transitory, computer-readable medium of claim 16 , wherein the memory host comprises a plurality of memory hosts and the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

instruct a portion of the plurality of memory hosts to free the page from cluster memory to increase the amount of cluster memory available to the plurality of memory hosts and reduce the amount of bandwidth needed to copy the page from the memory back to the plurality of memory hosts.

20. The non-transitory, computer-readable medium of claim 15 , wherein the machine-readable instructions, when executed by the processor, further cause the computing device to at least:

evict or reclaim a page in the memory for the page stored by the memory host.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0242 →
Priority Claims (1)
IN 202141032020 · Jul 16, 2021 · national
Continuity (2)
Continuation 17481335 · Sep 22, 2021
Related Publication 20230273751A1 · Aug 31, 2023