IP Library Granted Patent US 12,153,962
Granted Patent B2
US 12,153,962 · App. 16/849,915 · Granted Nov 26, 2024

Storage transactions with predictable latency

Inventors: Ziye Yang (Shanghai, CN); James R. Harris (Chandler, AZ); Kiran Patil (Portland, OR); Benjamin Walker (Chandler, AZ); Sudheer Mogilappagari (Hillsboro, OR); Yadong Li (Portland, OR); Mark Wunderlich (Lake Oswego, OR); Anil Vasudevan (Portland, OR)
Assignee: Intel Corporation
G06F9/5027G06F9/466G06F9/546G06F13/22H04L67/1097H04L69/16
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,153,962
App. No.
16/849,915
Granted
Nov 26, 2024
Kind
B2
Abstract

The disclosure concerns at least one processor that can execute a polling group to poll for storage transactions associated with a first group of one or more particular queue identifiers. The disclosure concerns at least one processor is configured to: execute a second polling group on a second processor, wherein the second polling group is to poll for storage transactions for a second group of one or more particular queue identifiers that are different than the one or more particular queue identifiers of the first group, wherein the second group of one or more particular queue identifiers are associated with one or more queues that can be accessed using the second polling group and not the first polling group.

Claims (44)

1. A computer-implemented method comprising:

a first polling group, executing on a first central processing unit (CPU) core, polling for identified storage transactions received in one or more packets in a first group of one or more queues, wherein the first group of one or more queues are associated with a first group of one or more particular queue identifiers and the first group of one or more queues are allocated in a memory of a network interface device;

a second polling group, executing on a second CPU core, polling for identified storage transactions received in one or more packets in a second group of one or more queues, wherein the second polling group polls for storage transactions for a second group of one or more particular queue identifiers and wherein the second group of one or more queues are allocated in the memory of the network interface device; and

performing the storage transactions identified by the first polling group and the second polling group, wherein

the first polling group performs a busy polling mode and defers interrupts to identify at least one input or output operation until after busy polling mode ends,

the busy polling mode comprises polling for the storage transactions in user space,

the first polling group polls the first group of one or more queues and not the second group of one or more queues,

the second polling group polls the second group of one or more queues and not the first group of one or more queues,

at least one transport protocol connection between a Non-volatile Memory Express over Fabrics (NVMe-oF) initiator and a NVMe-oF target is assigned to a queue of the first group of one or more queues, and

the storage transactions are based on NVMe-oF.

2. The method of claim 1 , wherein the first CPU core executes the first polling group and no other polling group.

3. The method of claim 1 , comprising allocating a transport protocol connection to a queue identifier and allocating the first polling group to the queue identifier of the transport protocol connection.

4. The method of claim 1 , comprising: based on termination of a transport protocol connection, de-allocating the terminated transport protocol connection from its queue identifier and de-allocating the first polling group from polling for input/output operations associated with the terminated transport protocol connection.

5. The method of claim 1 , wherein the storage transactions are received using a transport layer comprising one of: Transmission Control Protocol (TCP), InfiniBand, FibreChannel, or User Datagram Protocol (UDP).

6. The method of claim 1 , wherein the first polling group polls for storage transactions in user space.

7. The method of claim 1 , wherein a single queue of the one or more queues is allocated to multiple different transport protocol connections and the first polling group polls for storage transactions associated with the multiple different transport protocol connections.

8. A non-transitory computer-readable medium, comprising instructions that if executed by one or more processors, cause the one or more processors to:

execute a first polling group, on a first central processing unit (CPU) core, to poll for identified storage transactions received in one or more packets in a first group of one or more queues, wherein the first group of one or more queues are associated with a first group of one or more particular queue identifiers and wherein the first group of one or more queues are allocated in a memory of a network interface device;

execute a second polling group, on a second CPU core, to poll for identified storage transactions received in one or more packets in a second group of one or more queues, wherein the second polling group polls for storage transactions for a second group of one or more particular queue identifiers and wherein the second group of one or more queues are allocated in the memory of the network interface device; and

perform the storage transactions identified by the first polling group and the second polling group, wherein

the first polling group performs a busy polling mode and defers interrupts to identify at least one input or output operation until after busy polling mode ends,

the busy polling mode comprises polling for the storage transactions in user space,

the one or more queues are polled using the first polling group and not the second polling group, and

the storage transactions are based on Non-volatile Memory Express over Fabrics (NVMe-oF).

9. The non-transitory computer-readable medium of claim 8 , wherein the first CPU core executes the first polling group and no other polling group.

10. The non-transitory computer-readable medium of claim 8 , comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:

allocate a transport protocol connection between an NVMe-oF initiator and NVMe-oF target to a queue identifier and

allocate the first polling group to the queue identifier of the transport protocol connection.

11. The non-transitory computer-readable medium of claim 8 , comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:

based on termination of a transport protocol connection, de-allocate the terminated transport protocol connection from its queue identifier and

de-allocate the first polling group from polling for input/output operations associated with the terminated transport protocol connection.

12. The non-transitory computer-readable medium of claim 8 , wherein the one or more queues include at least one Application Device Queue (ADQ) accessible to the network interface device.

13. The non-transitory computer-readable medium of claim 8 , wherein the storage transactions are received using a transport layer comprising one of: Transmission Control Protocol (TCP), InfiniBand, FibreChannel, or User Datagram Protocol (UDP).

14. An apparatus comprising:

an interface

at least one central processing unit (CPU) processor coupled to the interface, the at least one CPU processor configured to:

execute a first polling group, on a first core of the CPU, to poll to identify storage transactions received in one or more packets in a first group of one or more queues, wherein the first group of one or more queues are associated with a first group of one or more particular queue identifiers and the first group of one or more queues are allocated in a memory of a network interface device;

execute a second polling group, on a second core of the CPU, to poll to identify storage transactions, wherein the second polling group is to poll for storage transactions for a second group of one or more particular queue identifiers and wherein the second group of one or more queues are allocated in the memory of the network interface device; and

process the storage transactions identified by the first polling group and the second polling group, wherein

the first polling group is to perform a busy polling mode and defer interrupts to identify at least one input or output operation until after busy polling mode ends,

the busy polling mode comprises polling for the storage transactions in user space,

the one or more queues are polled using the first polling group and not the second polling group and

the storage transactions are based on Non-volatile Memory Express over Fabrics (NVMe-oF).

15. The apparatus of claim 14 , wherein the first polling group is to execute on the first core of the CPU and the first core is to executes no other polling group.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072851/0056 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2020
From: YANG, ZIYE; HARRIS, JAMES R.; PATIL, KIRAN; WALKER, BENJAMIN; MOGILAPPAGARI, SUDHEER; LI, YADONG; WUNDERLICH, MARK; VASUDEVAN, ANIL
To: INTEL CORPORATION
Reel/Frame 052411/0958 →
Continuity (1)
Related Publication 20200241927A1 · Jul 30, 2020