IP Library Granted Patent US 11,256,549
Granted Patent B2
US 11,256,549 · App. 16/654,270 · Granted Feb 22, 2022

Method and apparatus for thread scheduling

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Ronen Gazit (Tel Aviv, IL)
Assignee: EMC IP HOLDING COMPANY LLC
G06F9/5038G06F9/485G06F9/4881G06F9/546G06F2209/5018
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,256,549
App. No.
16/654,270
Filed
Oct 16, 2019
Granted
Feb 22, 2022
Kind
B2
Examiner
SUN, CHARLIE
Art Unit
2196
USPC
718/104
Abstract

A method is provided for use in computing system, comprising: instantiating a plurality of scheduler queues; instantiating a plurality of type-1 threads; assigning each of the plurality of type-1 threads to a respective scheduler queue; allocating a plurality of budgets to the plurality of scheduling of queues, each of the plurality of budgets being allocated to a different one of the plurality of scheduling queues; selecting one of the plurality of scheduling queues; retrieving a type-1 thread from the selected scheduling queue when one of a first condition or a second condition is satisfied, the first condition being satisfied when the respective budget of the queue is not exhausted, and the second condition being satisfied when another one of the plurality of scheduling queues are empty; and executing the retrieved type-1 thread.

Claims (51)

1. A method for use in a computing system, comprising:

instantiating a plurality of scheduling queues;

instantiating a plurality of type-1 threads;

assigning each of the plurality of type-1 threads to a respective scheduling queue;

allocating a plurality of budgets to the plurality of scheduling of queues, each of the plurality of budgets being allocated to a different one of the plurality of scheduling queues, the plurality of budgets being allocated for a duration of a scheduling cycle;

selecting one of the plurality of scheduling queues;

retrieving a type-1 thread from the selected scheduling queue when one of a first condition or a second condition is satisfied, the first condition being satisfied when the respective budget of the queue is not exhausted, and the second condition being satisfied when another one of the plurality of scheduling queues is empty;

executing the retrieved type-1 thread; and

executing one or more type-2 threads after the scheduling cycle is completed and before a next scheduling cycle has begun.

2. The method of claim 1 , wherein the second condition is determined to be satisfied further upon confirming that the budget of the selected scheduling queue is exhausted.

3. The method of claim 1 , wherein the second condition is determined to be satisfied further upon confirming that all scheduling queues in the plurality of scheduling queues, which have a higher priority than the selected scheduling queue, are empty.

4. The method of claim 1 , wherein the respective budget of any of the scheduling queues specifies a maximum amount of time for which threads in that scheduling queue can be executed.

5. The method of claim 1 , wherein assigning each of the plurality of threads to a respective scheduling queue includes:

retrieving a queue identifier from the thread;

selecting one of the plurality of scheduling queues based on the retrieved identifier; and

adding the thread to the selected queue.

6. The method of claim 1 , wherein, wherein the selected scheduling queue is non-empty, and the selected scheduling queue has a highest priority among all non-empty scheduling queues in the plurality of scheduling queues.

7. A system comprising:

a memory; and

at least one processor operatively coupled to the memory, the at least one processor being configured to perform the operations of:

instantiating a plurality of scheduling queues;

instantiating a plurality of type-1 threads;

assigning each of the plurality of type-1 threads to a respective scheduling queue;

allocating a plurality of budgets to the plurality of scheduling of queues, each of the plurality of budgets being allocated to a different one of the plurality of scheduling queues, the plurality of budgets being allocated for a duration of a scheduling cycle;

selecting one of the plurality of scheduling queues;

retrieving a type-1 thread from the selected scheduling queue when one of a first condition or a second condition is satisfied, the first condition being satisfied when the respective budget of the queue is not exhausted, and the second condition being satisfied when another one of the plurality of scheduling queues is empty; and executing the retrieved type-1 thread; and

executing one or more type-2 threads after the scheduling cycle is completed and before a next scheduling cycle has begun.

8. The system of claim 7 , wherein the second condition is satisfied when the budget of the selected scheduling queue is exhausted.

9. The system of claim 7 , wherein the second condition is satisfied when all scheduling queues in the plurality of scheduling queues, which have a higher priority than the selected scheduling queue, are empty.

10. The system of claim 7 , wherein the respective budget of any of the scheduling queues specifies a maximum amount of time for which threads in that scheduling queue can be executed.

11. The system of claim 7 , wherein assigning each of the plurality of threads to a respective scheduling queue includes:

retrieving a queue identifier from the thread;

selecting one of the plurality of scheduling queues based on the retrieved identifier; and

adding the thread to the selected queue.

12. The system of claim 7 , wherein the selected scheduling queue is non-empty, and the selected scheduling queue has a highest priority among all non-empty scheduling queues in the plurality of scheduling queues.

13. A non-transitory computer-readable medium storing processor-executable instructions, which when executed by at least one processor cause the at least one processor to perform the operations of:

instantiating a plurality of scheduling queues;

instantiating a plurality of type-1 threads;

assigning each of the plurality of type-1 threads to a respective scheduling queue;

allocating a plurality of budgets to the plurality of scheduling of queues, each of the plurality of budgets being allocated to a different one of the plurality of scheduling queues, the plurality of budgets being allocated for a duration of a scheduling cycle;

selecting one of the plurality of scheduling queues;

retrieving a type-1 thread from the selected scheduling queue when one of a first condition or a second condition is satisfied, the first condition being satisfied when the respective budget of the queue is not exhausted, and the second condition being satisfied when another one of the plurality of scheduling queues is empty;

executing the retrieved type-1 thread; and

executing one or more type-2 threads after the scheduling cycle is completed and before a next scheduling cycle has begun.

14. The non-transitory computer-readable medium of claim 13 , wherein the second condition is satisfied when the budget of the selected scheduling queue is exhausted.

15. The non-transitory computer-readable medium of claim 13 , wherein the second condition is satisfied when all scheduling queues in the plurality of scheduling queues, which have a higher priority than the selected scheduling queue, are empty.

16. The non-transitory computer-readable medium of claim 13 , wherein the respective budget of any of the scheduling queues specifies a maximum amount of time for which threads in that scheduling queue can be executed.

17. The non-transitory computer-readable medium of claim 13 , wherein assigning each of the plurality of threads to a respective scheduling queue includes:

retrieving a queue identifier from the thread;

selecting one of the plurality of scheduling queues based on the retrieved identifier; and

adding the thread to the selected queue.

Assignments (9)
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 (051302/0528) 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 IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
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 AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
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 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2019
From: SHVEIDEL, VLADIMIR; GAZIT, RONEN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050785/0358 →
Continuity (1)
Related Publication 20210117238A1 · Apr 22, 2021