IP Library Granted Patent US 11,841,808
Granted Patent B2
US 11,841,808 · App. 17/375,499 · Granted Dec 12, 2023

System and method for processing requests in a multithreaded system

Inventors: Eldad Zinger (Raanana, IL); Leonid Ravich (Raanana, IL); Elad Grupi (Tel Aviv, IL)
Assignee: EMC IP Holding Company, LLC
G06F13/1668G06F9/4881
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,841,808
App. No.
17/375,499
Granted
Dec 12, 2023
Kind
B2
Abstract

A method, computer program product, and computing system for associating a plurality of NVMe IO submission queues with an NVMe IO completion queue. An NVMe IO completion queue polling frequency may be defined for a plurality of threads configured to provide one or more IO requests to the plurality of NVMe IO submission queues. The NVMe IO completion queue may be polled based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads.

Claims (38)

1. A computer-implemented method comprising:

associating a plurality of NVMe IO submission queues with an NVMe IO completion queue, wherein each NVMe IO submission queue of the plurality of NVMe IO submission queues is associated with a specific unique thread of a plurality of threads;

defining an NVMe IO completion queue polling frequency for the plurality of threads configured to provide one or more IO requests to the plurality of NVMe IO submission queues; and

polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads.

2. The computer-implemented method of claim 1 , further comprising: providing, via the plurality of threads, the one or more IO requests to an NVMe IO submission queue associated with a specific thread of the plurality of threads.

3. The computer-implemented method of claim 2 , further comprising

processing the one or more IO requests from the plurality of NVMe IO submission queues on one or more NVMe storage devices.

4. The computer-implemented method of claim 3 , further comprising:

in response to processing the one or more IO requests from the plurality of NVMe IO submission queues on the one or more NVMe storage devices, providing an NVMe IO completion entry for each IO request to the NVMe IO completion queue, thus defining one or more NVMe IO completion entries.

5. The computer-implemented method of claim 4 , wherein polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads includes:

processing, via the plurality of threads, the one or more NVMe IO completion entries from the NVMe IO completion queue.

6. The computer-implemented method of claim 1 , wherein polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads includes:

determining, via a first thread, whether the NVMe IO completion queue is being held by a second thread; and

in response to determining that the NVMe IO completion queue is being held by the second thread, forgoing the polling of the NVMe IO completion queue by the first thread.

7. A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:

associating a plurality of NVMe IO submission queues with an NVMe IO completion queue, wherein each NVMe IO submission queue of the plurality of NVMe IO submission queues is associated with a specific unique thread of a plurality of threads;

defining an NVMe IO completion queue polling frequency for a plurality of threads configured to provide one or more IO requests to the plurality of NVMe IO submission queues; and

polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads.

8. The computer program product of claim 7 , wherein the operations further comprise: providing, via the plurality of threads, the one or more IO requests to an NVMe IO submission queue associated with a specific thread of the plurality of threads.

9. The computer program product of claim 8 , wherein the operations further comprise:

processing the one or more IO requests from the plurality of NVMe IO submission queues on one or more NVMe storage devices.

10. The computer program product of claim 9 , wherein the operations further comprise:

in response to processing the one or more IO requests from the plurality of NVMe IO submission queues on the one or more NVMe storage devices, providing an NVMe IO completion entry for each IO request to the NVMe IO completion queue, thus defining one or more NVMe IO completion entries.

11. The computer program product of claim 10 , wherein polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads includes:

processing, via the plurality of threads, the one or more NVMe IO completion entries from the NVMe IO completion queue.

12. The computer program product of claim 7 , wherein polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads includes:

determining, via a first thread, whether the NVMe IO completion queue is being held by a second thread; and

in response to determining that the NVMe IO completion queue is being held by the second thread, forgoing the polling of the NVMe IO completion queue by the first thread.

13. A computing system comprising:

a memory; and

a processor configured to associate a plurality of NVMe IO submission queues with an NVMe IO completion queue, wherein each NVMe IO submission queue of the plurality of NVMe IO submission queues is associated with a specific unique thread of a plurality of threads, wherein the processor is further configured to define an NVMe IO completion queue polling frequency for a plurality of threads configured to provide one or more IO requests to the plurality of NVMe IO submission queues, and wherein the processor is further configured to poll, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads.

14. The computing system of claim 13 , wherein the processor is further configured to: provide, via the plurality of threads, the one or more IO requests to an NVMe IO submission queue associated with a specific thread of the plurality of threads.

15. The computing system of claim 14 , wherein the processor is further configured to:

process the one or more IO requests from the plurality of NVMe IO submission queues on one or more NVMe storage devices.

16. The computing system of claim 15 , wherein the processor is further configured to:

in response to processing the one or more IO requests from the plurality of NVMe IO submission queues on the one or more NVMe storage devices, provide an NVMe IO completion entry for each IO request to the NVMe IO completion queue, thus defining one or more NVMe IO completion entries.

17. The computing system of claim 16 , wherein polling, via the plurality of threads, the NVMe IO completion queue based upon, at least in part, the NVMe IO completion queue polling frequency defined for the plurality of threads includes:

processing, via the plurality of threads, the one or more NVMe IO completion entries from the NVMe IO completion queue.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0382 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 061654/0064 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2021
From: ZINGER, ELDAD; RAVICH, LEONID; GRUPI, ELAD
To: EMC IP HOLDING COMPANY, LLC
Reel/Frame 056853/0324 →
Continuity (1)
Related Publication 20230013913A1 · Jan 19, 2023