IP Library Granted Patent US 11,886,911
Granted Patent B2
US 11,886,911 · App. 16/915,380 · Granted Jan 30, 2024

End-to-end quality of service mechanism for storage system using prioritized thread queues

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Lior Kamran (Rishon LeZion, IL)
Assignee: EMC IP Holding Company LLC
G06F9/4881G06F3/067G06F3/0611G06F3/0659G06F9/5038G06F9/52
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,886,911
App. No.
16/915,380
Granted
Jan 30, 2024
Kind
B2
Abstract

At least one processing device comprises a processor and a memory coupled to the processor. The at least one processing device is configured to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system, to configure different sets of prioritized thread queues for respective ones of the different classes of service, to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues, and to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service. The at least one processing device illustratively comprises at least a subset of the plurality of processing cores of the storage system.

Claims (92)

1. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

said at least one processing device being configured:

to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

to configure different sets of prioritized thread queues for respective ones of the different classes of service;

to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein the threads of the one or more applications executing on at least one of a plurality of processing cores of the storage system comprise different sub-threads of a first thread of a first application executing on a particular one of the plurality of processing cores of the storage system;

wherein each of the sub-threads of the first thread is in a particular one of multiple designated states at a particular point in time, the multiple designated states including a running state, a ready state and a suspended state, and

wherein different ones of the sub-threads that are in the suspended state are enqueued in respective different ones of the prioritized thread queues in order to wait for access to respective corresponding synchronization objects associated with resources of the particular processing core.

2. The apparatus of claim 1 wherein said at least one processing device comprises at least a subset of the plurality of processing cores of the storage system.

3. The apparatus of claim 1 wherein the first application comprises a block-storage application of the storage system and the first thread comprises a truck thread that when executing on the particular processing core is configured to utilize substantially all available processing resources of that processing core.

4. The apparatus of claim 1 wherein associating different classes of service with respective threads of one or more applications comprises assigning designated class tags as attributes of the respective threads wherein different ones of the class tags denote respective different ones of the classes of service.

5. The apparatus of claim 4 wherein said at least one processing device is further configured:

to receive an input-output operation for processing;

to assign a particular one of the class tags to the input-output operation; and

to assign the particular one of the class tags to each of a plurality of threads that are generated in conjunction with the processing of the input-output operation;

wherein the assignment of the particular one of the class tags to the input-output operation is persistent throughout the processing of the input-output operation.

6. The apparatus of claim 5 wherein the processing of the input-output operation is distributed across a plurality of distinct storage nodes of the storage system, and further wherein each such storage node comprises one or more of the plurality of processing cores of the storage system.

7. The apparatus of claim 6 wherein the assigned class tag for the input-output operation is passed from a first one of the storage nodes to a second one of the storage nodes in conjunction with the processing of the input-output operation and is assigned to one or more threads generated in the second storage node for the processing of the input-output operation.

8. The apparatus of claim 1 wherein uniform sets of prioritized thread queues are provided for respective ones of a plurality of different synchronization objects, each of the synchronization objects comprising one or more of a semaphore, a timer, a lock, a barrier, a memory pool and a thread pool, wherein a single non-prioritized thread queue of a given one of the synchronization objects is replaced with multiple thread queues and priority-based selection among the multiple thread queues for the given synchronization object.

9. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

said at least one processing device being configured:

to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

to configure different sets of prioritized thread queues for respective ones of the different classes of service;

to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein the different sets of prioritized thread queues configured for respective ones of the different classes of service provide different dynamically adjustable latency levels for the threads that are enqueued therein.

10. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

said at least one processing device being configured:

to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

to configure different sets of prioritized thread queues for respective ones of the different classes of service;

to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein configuring different sets of prioritized thread queues for respective ones of the different classes of service comprises:

determining a number of priority classes;

determining a number of selection indexes for respective ones of the priority classes; and

establishing a particular number of prioritized thread queues based at least in part on the number of priority classes and the number of selection indexes.

11. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

said at least one processing device being configured:

to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

to configure different sets of prioritized thread queues for respective ones of the different classes of service;

to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein configuring different sets of prioritized thread queues for respective ones of the different classes of service comprises:

determining a number of priority classes;

establishing a set of prioritized thread queues for each of the priority classes; and

assigning weights to respective ones of the sets of prioritized thread queues of the respective priority classes;

wherein the prioritized thread queues within a given one of the sets each have a same priority for selection of threads enqueued therein; and

wherein different ones of the prioritized thread queues in different ones of the sets have different priorities for selection of threads enqueued therein.

12. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device comprising a processor coupled to a memory, causes said at least one processing device:

to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

to configure different sets of prioritized thread queues for respective ones of the different classes of service;

to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein the threads of the one or more applications executing on at least one of a plurality of processing cores of the storage system comprise different sub-threads of a first thread of a first application executing on a particular one of the plurality of processing cores of the storage system;

wherein each of the sub-threads of the first thread is in a particular one of multiple designated states at a particular point in time, the multiple designated states including a running state, a ready state and a suspended state.and

wherein different ones of the sub-threads that are in the suspended state are enqueued in respective different ones of the prioritized thread queues in order to wait for access to respective corresponding synchronization objects associated with resources of the particular processing core.

13. The computer program product of claim 12 wherein associating different classes of service with respective threads of one or more applications comprises assigning designated class tags as attributes of the respective threads wherein different ones of the class tags denote respective different ones of the classes of service.

14. The computer program product of claim 12 wherein the different sets of prioritized thread queues configured for respective ones of the different classes of service provide different dynamically adjustable latency levels for the threads that are enqueued therein.

15. A method comprising:

associating different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

configuring different sets of prioritized thread queues for respective ones of the different classes of service;

enqueuing particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

implementing different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein the threads of the one or more applications executing on at least one of a plurality of processing cores of the storage system comprise different sub-threads of a first thread of a first application executing on a particular one of the plurality of processing cores of the storage system;

wherein each of the sub-threads of the first thread is in a particular one of multiple designated states at a particular point in time, the multiple designated states including a running state, a ready state and a suspended state; and

wherein different ones of the sub-threads that are in the suspended state are enqueued in respective different ones of the prioritized thread queues in order to wait for access to respective corresponding synchronization objects associated with resources of the particular processing core.

16. The method of claim 15 wherein associating different classes of service with respective threads of one or more applications comprises assigning designated class tags as attributes of the respective threads wherein different ones of the class tags denote respective different ones of the classes of service.

17. The method of claim 15 wherein the different sets of prioritized thread queues configured for respective ones of the different classes of service provide different dynamically adjustable latency levels for the threads that are enqueued therein.

18. The method of claim 15 wherein configuring different sets of prioritized thread queues for respective ones of the different classes of service comprises:

determining a number of priority classes;

establishing a set of prioritized thread queues for each of the priority classes; and

assigning weights to respective ones of the sets of prioritized thread queues of the respective priority classes;

wherein the prioritized thread queues within a given one of the sets each have a same priority for selection of threads enqueued therein; and

wherein different ones of the prioritized thread queues in different ones of the sets have different priorities for selection of threads enqueued therein.

19. The method of claim 15 wherein uniform sets of prioritized thread queues are provided for respective ones of a plurality of different synchronization objects, each of the synchronization objects comprising one or more of a semaphore, a timer, a lock, a barrier, a memory pool and a thread pool, wherein a single non-prioritized thread queue of a given one of the synchronization objects is replaced with multiple thread queues and priority-based selection among the multiple thread queues for the given synchronization object.

20. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

said at least one processing device being configured:

to associate different classes of service with respective threads of one or more applications executing on at least one of a plurality of processing cores of a storage system;

to configure different sets of prioritized thread queues for respective ones of the different classes of service;

to enqueue particular ones of the threads associated with particular ones of the classes of service in corresponding ones of the prioritized thread queues; and

to implement different dequeuing policies for selecting particular ones of the enqueued threads from the different sets of prioritized thread queues based at least in part on the different classes of service;

wherein associating different classes of service with respective threads of one or more applications comprises assigning designated class tags as attributes of the respective threads wherein different ones of the class tags denote respective different ones of the classes of service; and

wherein said at least one processing device is further configured:

to receive an input-output operation for processing;

to assign a particular one of the class tags to the input-output operation; and

to assign the particular one of the class tags to each of a plurality of threads that are generated in conjunction with the processing of the input-output operation.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) 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 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) 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 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) 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 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
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 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
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 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
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 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2020
From: SHVEIDEL, VLADIMIR; KAMRAN, LIOR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053077/0225 →