IP Library Granted Patent US 11,436,112
Granted Patent B1
US 11,436,112 · App. 17/321,673 · Granted Sep 6, 2022

Remote direct memory access (RDMA)-based recovery of dirty data in remote memory

Inventors: Keerthi Kumar (Bangalore, IN); Halesh Sadashiv (Bangalore, IN); Sairam Veeraswamy (Coimbatore, IN); Rajesh Venkatasubramanian (San Jose, CA); Kiran Dikshit (Bangalore, IN); Kiran Tati (Fremont, CA)
Assignee: VMware, Inc.
G06F11/2046G06F11/2023G06F11/2038G06F11/2094G06F15/17331G06F2201/85
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,436,112
App. No.
17/321,673
Granted
Sep 6, 2022
Kind
B1
Abstract

Techniques for implementing RDMA-based recovery of dirty data in remote memory are provided. In one set of embodiments, upon occurrence of a failure at a first (i.e., source) host system, a second (i.e., failover) host system can allocate a new memory region corresponding to a memory region of the source host system and retrieve a baseline copy of the memory region from a storage backend shared by the source and failover host systems. The failover host system can further populate the new memory region with the baseline copy and retrieve one or more dirty page lists for the memory region from the source host system via RDMA, where the one or more dirty page lists identify memory pages in the memory region that include data updates not present in the baseline copy. For each memory page identified in the one or more dirty page lists, the failover host system can then copy the content of that memory page from the memory region of the source host system to the new memory region via RDMA.

Claims (46)

1. A method comprising, upon occurrence of a failure at a source host system:

allocating, by a failover host system, a new memory region in a physical memory of the failover host system corresponding to a memory region residing in a physical memory of the source host system;

retrieving, by the failover host system, a baseline copy of the memory region from a storage backend shared by the source host system and the failover host system, the baseline copy representing a copy of the memory region as captured via a periodic flushing operation to the storage backend prior to the failure;

populating, by the failover host system, the new memory region with the baseline copy;

retrieving, by the failover host system, one or more dirty page lists for the memory region from the source host system via remote direct memory access (RDMA), the one or more dirty page lists identifying memory pages in the memory region that include data updates not present in the baseline copy; and

for each memory page identified in the one or more dirty page lists, copying, by the failover host system, content of the memory page from the memory region of the source host system to the new memory region of the failover host system via RDMA.

2. The method of claim 1 wherein the failure is caused by an unrecoverable error in an operating system or hypervisor kernel of the source host system.

3. The method of claim 1 wherein the memory region of the source host system is a persistent memory region.

4. The method of claim 1 further comprising, prior to the occurrence of the failure at the source host system:

establishing, by the failover host system, an RDMA connection to the source host system; and

receiving, by the failover host system from the source host system, a starting memory address and size of a portion of the physical memory of the source host system that holds the one or more dirty page lists.

5. The method of claim 4 wherein the portion of the physical memory of the source host system that holds the one or more dirty page lists is registered as an RDMA region in a RDMA-capable network interface controller (NIC) of the source host system.

6. The method of claim 1 wherein the one or more dirty page lists include a first list comprising dirty memory pages identified in a Page Modification Logging (PML) memory of the source host system and a second list comprising dirty memory pages identified in a dirty drain buffer of the source host system.

7. The method of claim 6 wherein the contents of the dirty memory pages included in the first list are copied from the memory region of the source host system to the new memory region of the failover host system after the contents of the dirty memory pages included in the second list.

8. A non-transitory computer readable storage medium having stored thereon program code executable by a failover host system, the program code embodying a method comprising, upon occurrence of a failure at a source host system:

allocating a new memory region in a physical memory of the failover host system corresponding to a memory region residing in a physical memory of the source host system;

retrieving a baseline copy of the memory region from a storage backend shared by the source host system and the failover host system, the baseline copy representing a copy of the memory region as captured via a periodic flushing operation to the storage backend prior to the failure;

populating the new memory region with the baseline copy;

retrieving one or more dirty page lists for the memory region from the source host system via remote direct memory access (RDMA), the one or more dirty page lists identifying memory pages in the memory region that include data updates not present in the baseline copy; and

for each memory page identified in the one or more dirty page lists, copying content of the memory page from the memory region of the source host system to the new memory region of the failover host system via RDMA.

9. The non-transitory computer readable storage medium of claim 8 wherein the failure is caused by an unrecoverable error in an operating system or hypervisor kernel of the source host system.

10. The non-transitory computer readable storage medium of claim 8 wherein the memory region of the source host system is a persistent memory region.

11. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises, prior to the occurrence of the failure at the source host system:

establishing an RDMA connection to the source host system; and

receiving, from the source host system, a starting memory address and size of a portion of the physical memory of the source host system that holds the one or more dirty page lists.

12. The non-transitory computer readable storage medium of claim 11 wherein the portion of the physical memory of the source host system that holds the one or more dirty page lists is registered as an RDMA region in a RDMA-capable network interface controller (NIC) of the source host system.

13. The non-transitory computer readable storage medium of claim 8 wherein the one or more dirty page lists include a first list comprising dirty memory pages identified in a Page Modification Logging (PML) memory of the source host system and a second list comprising dirty memory pages identified in a dirty drain buffer of the source host system.

14. The non-transitory computer readable storage medium of claim 13 wherein the contents of the dirty memory pages included in the first list are copied from the memory region of the source host system to the new memory region of the failover host system after the contents of the dirty memory pages included in the second list.

15. A host system comprising:

a processor;

a physical memory;

a remote direct memory access (RDMA)-capable network interface controller (NIC); and

a non-transitory computer readable medium having stored thereon program code that, when executed by the processor, causes the processor to, upon occurrence of a failure at another host system:

allocate a new memory region in the physical memory corresponding to a memory region residing in a physical memory of said another host system;

retrieve a baseline copy of the memory region from a storage backend shared by the host system and said another host system, the baseline copy representing a copy of the memory region as captured via a periodic flushing operation to the storage backend prior to the failure;

populate the new memory region with the baseline copy;

retrieve one or more dirty page lists for the memory region from said another host system via RDMA, the one or more dirty page lists identifying memory pages in the memory region that include data updates not present in the baseline copy; and

for each memory page identified in the one or more dirty page lists, copy content of the memory page from the memory region of said another host system to the new memory region via RDMA.

16. The host system of claim 15 wherein the failure is caused by an unrecoverable error in an operating system or hypervisor kernel of said another host system.

17. The host system of claim 15 wherein the memory region of said another host system is a persistent memory region.

18. The host system of claim 15 wherein the program code further causes the processor to, prior to the occurrence of the failure at said another host system:

establish an RDMA connection to said another host system; and

receive, from said another host system, a starting memory address and size of a portion of the physical memory of said another host system that holds the one or more dirty page lists.

19. The host system of claim 18 wherein the portion of the physical memory of the said another host system that holds the one or more dirty page lists is registered as an RDMA region in a RDMA-capable NIC of said another host system.

20. The host system of claim 15 wherein the one or more dirty page lists include a first list comprising dirty memory pages identified in a Page Modification Logging (PML) memory of said another host system and a second list comprising dirty memory pages identified in a dirty drain buffer of said another host system.

21. The host system of claim 20 wherein the contents of the dirty memory pages included in the first list are copied from the memory region of said another host system to the new memory region of the host system after the contents of the dirty memory pages included in the second list.

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 May 17, 2021
From: KUMAR, KEERTHI; SADASHIV, HALESH; VEERASWAMY, SAIRAM; VENKATASUBRAMANIAN, RAJESH; DIKSHIT, KIRAN; TATI, KIRAN
To: VMWARE, INC.
Reel/Frame 056257/0669 →
Cited By (4)
US 12,254,211 US 12,373,363 US 12,474,946 US 12,632,280