IP Library Granted Patent US 11,112,999
Granted Patent B2
US 11,112,999 · App. 16/524,954 · Granted Sep 7, 2021

Optimizing I/O latency by software stack latency reduction in a cooperative thread processing model

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Ronen Gazit (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/0604G06F3/0673G06F9/44521
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,112,999
App. No.
16/524,954
Granted
Sep 7, 2021
Kind
B2
Abstract

A method for use in a storage node, the method comprising: instantiating a first poller for detecting whether pending storage device operations have been completed; executing the first poller to identify a first storage device operation that has been completed, wherein executing the first poller includes: (a) executing a first function to detect whether a completion queue corresponding to a storage device driver is empty, the first function being arranged to read a content of a memory location that is associated with the completion queue, (b) terminating the execution of the first poller when the completion queue is empty, and (c) executing a system call function to the storage device driver when the completion queue is non-empty; identifying a first thread that is waiting for the first storage device operation to be completed; and transitioning the first thread from a waiting state to a ready state.

Claims (46)

1. A method for use in a storage node, the method comprising:

instantiating a first poller for detecting whether pending storage device operations have been completed;

executing the first poller to identify a first storage device operation that has been completed, wherein executing the first poller includes: (a) executing a first function to detect whether a completion queue corresponding to a storage device driver is empty, the first function being arranged to read a content of a memory location that is associated with the completion queue, the first function being executed in a user space of the storage node, (b) terminating the execution of the first poller when the completion queue is empty, and (c) executing a system call function to the storage device driver only when the completion queue is not empty, wherein the system call function is executed in a kernel space of the storage node, and the system call function is configured to identify one or more operations that are listed in the completion queue;

identifying a first thread that is waiting for the first storage device operation to be completed; and

transitioning the first thread from a waiting state to a ready state.

2. The method of claim 1 , wherein the first thread is arranged to execute a processor yield operation at intervals that are less than or equal to a scheduling interval of the first poller.

3. The method of claim 1 , further comprising:

instantiating a second poller for detecting whether pending storage device operations have been completed;

executing the second poller to identify a second storage device operation that has been completed, wherein executing the second poller includes: (a) executing the first function to detect whether the completion queue is empty, (b) terminating the execution of the second poller when the completion queue is empty, and (c) executing the system call function to the storage device driver when the completion queue is not empty;

identifying a second thread that is waiting for the second storage device operations to be completed; and

transitioning the second thread from a waiting state to a ready state,

wherein the first poller is executed by a first processor of the storage node and the second poller is executed by a second processor of the storage node.

4. The method of claim 3 , wherein the first poller and the second poller are executed concurrently, the first thread is executed on the first processor, and the second thread is executed on the second processor.

5. The method of claim 3 , further comprising instantiating a poller synchronization object, wherein the first poller and the second poller are executed at least in part sequentially based on the poller synchronization object, the first thread is executed on either one of the first processor and the second processor, and the second thread is executed on either one of the first processor and the second processor.

6. An apparatus, comprising:

a memory; and

a processing circuitry operatively coupled to the memory, the processing circuitry being configured to perform the operations of:

instantiating a first poller for detecting whether pending storage device operations have been completed;

executing the first poller to identify a first storage device operation that has been completed, wherein executing the first poller includes: (a) executing a first function to detect whether a completion queue corresponding to a storage device driver is empty, the first function being arranged to read a content of a memory location that is associated with the completion queue, the first function being executed in a user space of the storage node, (b) terminating the execution of the first poller when the completion queue is empty, and (c) executing a system call function to the storage device driver only when the completion queue is not empty, wherein the system call function is executed in a kernel space of the storage node, and the system call function is configured to identify one or more operations that are listed in the completion queue;

identifying a first thread that is waiting for the first storage device operation to be completed; and

transitioning the first thread from a waiting state to a ready state.

7. The apparatus of claim 6 , wherein the first thread is arranged to execute a processor yield operation at intervals that are less than or equal to a scheduling interval of the first poller.

8. The apparatus of claim 6 , wherein the processing circuitry is further configured to perform the operations of:

instantiating a second poller for detecting whether pending storage device operations have been completed;

executing the second poller to identify a second storage device operation that has been completed, wherein executing the second poller includes: (a) executing the first function to detect whether the completion queue is empty, (b) terminating the execution of the second poller when the completion queue is empty, and (c) executing the system call function to the storage device driver when the completion queue is not empty;

identifying a second thread that is waiting for the second storage device operation to be completed; and

transitioning the second thread from a waiting state to a ready state,

wherein the processing circuitry includes a first processor and a second processor, and

wherein the first poller is executed by the first processor and the second poller is executed by the second processor.

9. The apparatus of claim 8 , wherein the first poller and the second poller are executed concurrently, the first threads is executed on the first processor, and the second thread is executed on the second processor.

10. The apparatus of claim 8 , further comprising instantiating a poller synchronization object, wherein the first poller and the second poller are executed at least in part sequentially based on the poller synchronization object, the first thread is executed on either one of the first processor and the second processor, and the second thread is executed on either one of the first processor and the second processor.

11. A non-transitory computer-readable medium storing one or more processor-executable instructions, which when executed by a processing circuitry of a storage node cause the processing circuitry to perform the operations of:

instantiating a first poller for detecting whether pending storage device operations have been completed;

executing the first poller to identify a first storage device operation that has been completed, wherein executing the first poller includes: (a) executing a first function to detect whether a completion queue corresponding to a storage device driver is empty, the first function being arranged to read a content of a memory location that is associated with the completion queue, the first function being executed in a user space of the storage node, (b) terminating the execution of the first poller when the completion queue is empty, and (c) executing a system call function to the storage device driver when the completion queue is not empty, wherein the first poller is configured to execute the system call function only when the completion queue is not empty, the system call function is executed in a kernel space of the storage node, and the system call function is configured to identify one or more operations that are listed in the completion queue;

identifying a first thread that is waiting for the first storage device operation to be completed; and

transitioning the first thread from a waiting state to a ready state.

12. The non-transitory computer-readable of claim 11 , wherein the first thread is arranged to execute a processor yield operation at intervals that are less than or equal to a scheduling interval of the first poller.

13. The non-transitory computer-readable of claim 11 , further comprising:

instantiating a second poller for detecting whether pending storage device operations have been completed;

executing the second poller to identify one or more second storage device operations that have been completed, wherein executing the second poller includes: (a) executing the first function to detect whether the completion queue is empty, (b) terminating the execution of the second poller when the completion queue is empty, and (c) executing the system call function to the storage device driver when the completion queue is not empty;

identifying a second thread that is waiting for the second storage device operation to be completed; and

transitioning the second thread from a waiting state to a ready state,

wherein the processing circuitry includes a first processor and a second processor, and

wherein the first poller is executed by the first processor and the second poller is executed by the second processor.

14. The non-transitory computer-readable of claim 13 , wherein the first poller and the second poller are executed concurrently, the first thread is executed on the first processor, and the second thread is executed on the second processor.

15. The non-transitory computer-readable of claim 13 , further comprising instantiating a poller synchronization object, wherein the first poller and the second poller are executed at least in part sequentially based on the poller synchronization object, the first thread include is executed on either one of the first processor and the second processor, and the second thread is executed on either one of the first processor and the second processor.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: EMC CORPORATION; DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: SHVEIDEL, VLADIMIR; GAZIT, RONEN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049917/0657 →
Continuity (1)
Related Publication 20210034287A1 · Feb 4, 2021