IP Library Granted Patent US 11,429,548
Granted Patent B2
US 11,429,548 · App. 17/163,031 · Granted Aug 30, 2022

Optimizing RDMA performance in hyperconverged computing environments

Inventors: Hema Venkataramani (San Jose, CA); Felipe Franciosi (Cambridge, GB); Gokul Kannan (Snoqualmie, WA); Sreejith Mohanan (San Jose, CA); Alok Nemchand Kataria (Pune, IN); Raphael Shai Norwitz (New Rochelle, NY)
G06F13/28G06F3/061G06F3/067G06F3/0655G06F2213/28
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,429,548
App. No.
17/163,031
Filed
Jan 29, 2021
Granted
Aug 30, 2022
Kind
B2
Art Unit
2181
USPC
710/22
Abstract

Methods, systems, and computer program products for high-performance cluster computing. Multiple components are operatively interconnected to carry out operations for high-performance RDMA I/O transfers over an RDMA NIC. A virtual machine of a virtualization environment initiates a first I/O call to an HCI storage pool controller using RDMA. Responsive to the first I/O call, a second I/O call is initiated from the HCI storage pool controller to a storage device of an HCI storage pool. The first I/O call to the HCI storage pool controller is implemented through a first virtual function of an RDMA NIC that is exposed in the user space of the virtualization environment. Prior to the first RDMA I/O call, a contiguous unit of memory to use in an RDMA I/O transfer is registered with the RDMA NIC. The contiguous unit of memory comprises memory that is registered using non-RDMA paths such as TCP or iSCSI.

Claims (45)

1. A non-transitory computer readable medium having stored thereon a sequence of instructions which, when stored in memory and executed by a processor cause the processor to perform acts comprising:

initiating, from a virtual machine of a virtualization environment, a remote direct memory access (RDMA) input/output (I/O) call to a hyperconverged computing infrastructure (HCI) storage pool controller; and

responsive to the RDMA I/O call, implementing a second I/O call from the HCI storage pool controller to a storage device of an HCI storage pool.

2. The non-transitory computer readable medium of claim 1 , wherein the RDMA I/O call to the HCI storage pool controller is implemented through a first virtual function of an RDMA network interface card (NIC), wherein the first virtual function of an RDMA NIC is exposed in a user space of the virtualization environment.

3. The non-transitory computer readable medium of claim 2 , wherein a second virtual machine initiates a second I/O call to the HCI storage pool controller through the first virtual function of the RDMA NIC.

4. The non-transitory computer readable medium of claim 2 , wherein, in response to the RDMA I/O call, the HCI storage pool controller accesses a second virtual function of the RDMA NIC.

5. The non-transitory computer readable medium of claim 2 , wherein a second virtual function of the RDMA NIC is exposed in the user space of the virtualization environment.

6. The non-transitory computer readable medium of claim 1 , wherein a multi-thread I/O path manager of the virtualization environment forwards the RDMA I/O call to the HCI storage pool controller.

7. The non-transitory computer readable medium of claim 1 , wherein the second I/O call from the HCI storage pool controller to the storage device of the HCI storage pool is a small computer system interface (SCSI) I/O call.

8. The non-transitory computer readable medium of claim 1 , wherein a contiguous unit of memory to use in an RDMA data transfer comprises at least a portion of the contiguous unit of memory that is registered using non-RDMA.

9. The non-transitory computer readable medium of claim 1 , wherein the RDMA I/O call to the HCI storage pool controller references an RDMA memory buffer that comprises a portion of a contiguous unit of memory that is registered using non-RDMA.

10. A method comprising:

initiating, from a virtual machine of a virtualization environment, a remote direct memory access (RDMA) input/output (I/O) call to a hyperconverged computing infrastructure (HCI) storage pool controller; and

responsive to the RDMA I/O call, implementing a second I/O call from the HCI storage pool controller to a storage device of an HCI storage pool.

11. The method of claim 10 , wherein the RDMA I/O call to the HCI storage pool controller is implemented through a first virtual function of an RDMA network interface card (NIC), wherein the first virtual function of an RDMA NIC is exposed in a user space of the virtualization environment.

12. The method of claim 11 , wherein a second virtual machine initiates a second I/O call to the HCI storage pool controller through the first virtual function of the RDMA NIC.

13. The method of claim 11 , wherein, in response to the RDMA I/O call, the HCI storage pool controller accesses a second virtual function of the RDMA NIC.

14. The method of claim 11 , wherein a second virtual function of the RDMA NIC is exposed in the user space of the virtualization environment.

15. The method of claim 10 , wherein a multi-thread I/O path manager of the virtualization environment forwards the RDMA I/O call to the HCI storage pool controller.

16. The method of claim 10 , wherein the second I/O call from the HCI storage pool controller to the storage device of the HCI storage pool is a small computer system interface (SCSI) I/O call.

17. The method of claim 10 , wherein a contiguous unit of memory to use in an RDMA data transfer comprises at least a portion of the contiguous unit of memory that is registered using non-RDMA.

18. The method of claim 10 , wherein the RDMA I/O call to the HCI storage pool controller references an RDMA memory buffer that comprises a portion of a contiguous unit of memory that is registered using non-RDMA.

19. A system comprising:

a storage medium having stored thereon a sequence of instructions; and

a processor that executes the sequence of instructions to cause the processor to perform acts comprising,

initiating, from a virtual machine of a virtualization environment, a remote direct memory access (RDMA) input/output (I/O) call to a hyperconverged computing infrastructure (HCI) storage pool controller; and

responsive to the RDMA I/O call, implementing a second I/O call from the HCI storage pool controller to a storage device of an HCI storage pool.

20. The system of claim 19 , wherein the RDMA I/O call to the HCI storage pool controller is implemented through a first virtual function of an RDMA network interface card (NIC), wherein the first virtual function of an RDMA NIC is exposed in a user space of the virtualization environment.

21. The system of claim 20 , wherein a second virtual machine initiates a second I/O call to the HCI storage pool controller through the first virtual function of the RDMA NIC.

22. The system of claim 20 , wherein, in response to the RDMA I/O call, the HCI storage pool controller accesses a second virtual function of the RDMA NIC.

23. The system of claim 20 , wherein a second virtual function of the RDMA NIC is exposed in the user space of the virtualization environment.

24. The system of claim 19 , wherein a multi-thread I/O path manager of the virtualization environment forwards the RDMA I/O call to the HCI storage pool controller.

25. The system of claim 19 , wherein the second I/O call from the HCI storage pool controller to the storage device of the HCI storage pool is a small computer system interface (SCSI) I/O call.

26. The system of claim 19 , wherein a contiguous unit of memory to use in an RDMA data transfer comprises at least a portion of the contiguous unit of memory that is registered using non-RDMA.

27. The system of claim 19 , wherein the RDMA I/O call to the HCI storage pool controller references an RDMA memory buffer that comprises a portion of a contiguous unit of memory that is registered using non-RDMA.

28. A non-transitory computer readable medium having stored thereon a sequence of instructions which, when stored in memory and executed by a processor cause the processor to perform acts comprising:

initiating, from a virtual machine of a virtualization environment, a remote direct memory access (RDMA) input/output (I/O) call to a hyperconverged computing infrastructure (HCI) storage pool controller, wherein the RDMA I/O call is implemented by accessing I/O data directly from an address space of the virtual machine; and

responsive to the RDMA I/O call, implementing a second I/O call from the HCI storage pool controller to a storage device of an HCI storage pool.

29. The non-transitory computer readable medium of claim 28 , wherein the RDMA I/O call forms a chained work request to access the I/O data directly from the address space of the virtual machine to move to the HCI storage pool controller.

30. The non-transitory computer readable medium of claim 28 , further comprising instructions which, when stored in memory and executed by the processor causes acts of moving read I/O data from the HCI storage pool controller directly to the address space of the virtual machine.

31. A non-transitory computer readable medium having stored thereon a sequence of instructions which, when stored in memory and executed by a processor causes the processor to perform acts comprising:

initiating, from a virtual machine of a virtualization environment, a remote direct memory access (RDMA) input/output (I/O) call to a hyperconverged computing infrastructure (HCI) storage pool controller, wherein the RDMA I/O call is implemented by accessing I/O data directly from an address space of the virtual machine; and

responsive to the RDMA I/O call, implementing a second I/O call from the HCI storage pool controller to a storage device of an HCI storage pool.

32. The non-transitory computer readable medium of claim 31 , wherein the RDMA I/O call is implemented using an RDMA call that does not copy I/O data from kernel space to user space.

33. The non-transitory computer readable medium of claim 31 , wherein the RDMA I/O call is implemented using an RDMA call that moves I/O data from user space locations of the virtual machine to different user space locations of a different virtual machine.

Assignments (2)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2021
From: VENKATARAMANI, HEMA; FRANCIOSI, FELIPE; KANNAN, GOKUL; MOHANAN, SREEJITH; KATARIA, ALOK NEMCHAND; NORWITZ, RAPHAEL SHAI
To: NUTANIX, INC.
Reel/Frame 056278/0316 →
Priority Claims (1)
IN 202041052663 · Dec 3, 2020 · national
Continuity (1)
Related Publication 20220179809A1 · Jun 9, 2022