IP Library Granted Patent US 7,756,943
Granted Patent B1
US 7,756,943 · App. 11/340,102 · Granted Jul 13, 2010

Efficient data transfer between computers in a virtual NUMA system using RDMA

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 7,756,943
App. No.
11/340,102
Granted
Jul 13, 2010
Kind
B1
Abstract

In one embodiment, a virtual NUMA machine is formed from multiple computers coupled to a network. Each computer includes a memory and a hardware device coupled to the memory. The hardware device is configured to communicate on the network, and more particularly is configured to perform remote direct memory access (RDMA) communications on the network to access the memory in other computers. A guest physical address space of the virtual NUMA machine spans a portion of the memories in each of the computers, and each computer serves as a home node for at least one respective portion of the guest physical address space. A software module on a first computer uses RDMA to coherently access data on a home node of the data without interrupting execution in the home node.

Claims (35)

1. A system comprising:

a plurality of computers coupled to a network, wherein each of the plurality of computers comprises a memory and a hardware device coupled to the memory, wherein the hardware device is configured to communicate on the network, wherein the hardware device is configured to perform remote direct memory access (RDMA) communications on the network to access the memory in other ones of the plurality of computers;

wherein a guest physical address space of a virtual machine formed from the plurality of computers spans at least a portion of the memories in each of the plurality of computers, each of the plurality of computers serving as a home node for at least one respective portion of the guest physical address space;

wherein a software module on a first computer of the plurality of computers, when executed on the first computer, uses RDMA to coherently access data on a home node of the data without interrupting execution in the home node;

wherein the software module, when executed, accesses the data using a first RDMA operation, and wherein the software module, when executed, uses the guest physical address of the block in the first RDMA operation, and wherein the hardware device in the home node is configured to translate the guest physical address to the corresponding address in the memory in the home node, and wherein the hardware device in the home node is configured to access the memory using the corresponding address; and

wherein the access to the data comprises a read operation, and wherein the first RDMA operation is an RDMA read, and wherein the RDMA read includes the guest physical address and further includes a target address in the first computer, the target address identifying a location in the memory of the first computer, and wherein the RDMA read comprises the hardware device in the home node reading data from the corresponding address and transmitting the data to the first computer, and wherein the hardware device in the first computer is configured to write the data to the location in the first computer.

2. The system as recited in claim 1 wherein another portion of the memories in each computer is configured to store metadata for at least one range of guest physical addresses for which that computer is the home node, wherein the metadata is used to manage coherency, and wherein the software module, when executed, uses RDMA to access the metadata.

3. The system as recited in claim 2 wherein the metadata identifies an owner for each block in the range, and wherein the software module, when executed, uses an RDMA read to identify the owner if an ownership transfer is needed.

4. The system as recited in claim 3 wherein the software module, when executed, uses an RDMA write to update the metadata with the new owner in response to completing the ownership transfer.

5. The system as recited in claim 2 wherein the metadata identifies whether or not each block has one or more read sharers, and wherein the software module, when executed, uses an RDMA write to update the read share indication in response to reading a block.

6. The system as recited in claim 5 wherein the software module, when executed, issues the RDMA write without reading the read share indication first.

7. A computer comprising:

a memory;

a hardware device coupled to the memory and configured to communicate on a network, wherein the hardware device is configured to perform remote direct memory access (RDMA) communications on the network to access the memory in other computers; and

a software module;

wherein a guest physical address space of a virtual machine formed from the computer and the other computers spans at least a portion of the memories in each of the computers, each computer serving as a home node for at least one respective portion of the guest physical address space; and

wherein the software module, when executed, uses RDMA to coherently access data on a home node of the data without interrupting execution in the home node;

wherein the software module, when executed, accesses the data using a first RDMA operation, and wherein the software module, when executed, uses the guest physical address of the block in the first RDMA operation, and wherein the home node is configured to translate the guest physical address to the corresponding address in the memory in the home node, and wherein the home node is configured to access the memory using the corresponding address; and

wherein the access to the data comprises a read operation, and wherein the first RDMA operation is an RDMA read, and wherein the RDMA read includes the guest physical address and further includes a target address in the computer, the target address identifying a location in the memory in the computer, and wherein the RDMA read comprises the home node reading data from the corresponding address and transmitting the data to the computer, and wherein the hardware device in the computer is configured to write the data to the location in the computer.

8. The computer as recited in claim 7 wherein another portion of the memories in each computer is configured to store metadata for at least one range of guest physical addresses for which that computer is the home node, wherein the metadata is used to manage coherency, and wherein the software module, when executed, uses RDMA to access the metadata.

9. The computer as recited in claim 8 wherein the metadata identifies an owner for each block in the range, and wherein the software module, when executed, uses an RDMA read to identify the owner if an ownership transfer is needed.

10. The computer as recited in claim 9 wherein the software module, when executed, uses an RDMA write to update the metadata with the new owner in response to completing the ownership transfer.

11. The computer as recited in claim 8 wherein the metadata identifies whether or not each block has one or more read sharers, and wherein the software module, when executed, uses an RDMA write to update the read share indication in response to reading a block.

12. The computer as recited in claim 11 wherein the software module, when executed, issues the RDMA write without reading the read share indication first.

13. A computer accessible storage medium storing a plurality of instructions which, when executed on a computer comprising a memory and a hardware device coupled to the memory and configured to communicate on a network using remote direct memory access (RDMA) communications on the network to access the memory in other computers, uses RDMA to coherently access data on a home node of the data without interrupting execution in the home node, where a guest physical address space of a virtual machine formed from the computer and the other computers spans at least a portion of the memories in each of the computers, each computer serving as a home node for at least one respective portion of the guest physical address space, and wherein the plurality of instructions, when executed, accesses the data using a first RDMA operation, and wherein the plurality of instructions, when executed, uses the guest physical address of the block in the first RDMA operation, and wherein the home node is configured to translate the guest physical address to the corresponding address in the memory in the home node, and wherein the home node is configured to access the memory using the corresponding address, and wherein the access to the data comprises a read operation, and wherein the first RDMA operation is an RDMA read, and wherein the RDMA read includes the guest physical address and further includes a target address in the computer, the target address identifying a location in the memory in the computer, and wherein the RDMA read comprises the home node reading data from the corresponding address and transmitting the data to the computer, and wherein the hardware device in the computer is configured to write the data to the location in the computer.

14. The computer accessible storage medium as recited in claim 13 wherein another portion of the memories in each computer is configured to store metadata for at least one range of guest physical addresses for which that computer is the home node, wherein the metadata is used to manage coherency, and wherein the plurality of instructions, when executed, uses RDMA to access the metadata.

15. The computer accessible storage medium as recited in claim 14 wherein the metadata identifies an owner for each block in the range, and wherein the plurality of instructions, when executed, uses an RDMA read to identify the owner if an ownership transfer is needed.

16. The computer accessible storage medium as recited in claim 15 wherein the plurality of instructions, when executed, uses an RDMA write to update the metadata with the new owner in response to completing the ownership transfer.

17. The computer accessible storage medium as recited in claim 14 wherein the metadata identifies whether or not each block has one or more read sharers, and wherein the plurality of instructions, when executed, uses an RDMA write to update the read share indication in response to reading a block.

18. The computer accessible storage medium as recited in claim 17 wherein the plurality of instructions, when executed, issues the RDMA write without reading the read share indication first.

19. In a computer comprising a memory and a hardware device coupled to the memory and configured to communicate on a network, wherein the hardware device is configured to perform remote direct memory access (RDMA) communications on the network to access the memory in other computers, a method comprising:

using RDMA to coherently access data on a home node of the data without interrupting execution in the home node, wherein a guest physical address space of a virtual machine formed from the computer and the other computers spans at least a portion of the memories in each of the computers, each computer serving as a home node for a respective portion of the guest physical address space, wherein using the RDMA comprises accessing the data using a first RDMA operation including the guest physical address of the block in the first RDMA operation;

the home node translating the guest physical address to the corresponding address in the memory in the home node;

the home node accessing the memory using the corresponding address, and wherein the access to the data comprises a read operation, and wherein the first RDMA operation is an RDMA read, and wherein the RDMA read includes the guest physical address and further includes a target address in the computer, the target address identifying a location in the memory in the computer, and wherein the home node accessing the memory comprises the home node reading data from the corresponding address and transmitting the data to the computer; and

the hardware device in the computer writing the data to the location in the computer.

Assignments (12)
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2006
From: WONG, KAI C.
To: VERITAS OPERATING CORPORATION
Reel/Frame 017503/0533 →