IP Library Granted Patent US 11,372,682
Granted Patent B2
US 11,372,682 · App. 16/815,265 · Granted Jun 28, 2022

Method and system for deadline inheritance for resource synchronization

Inventors: Alexandr Veprinsky (Brookline, MA); Felix Shvaiger (Nashua, NH); Anton Kucherov (Dudley, MA); Arieh Don (Newton, MA)
Assignee: EMC IP Holding Company LLC
G06F9/5038
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,372,682
App. No.
16/815,265
Granted
Jun 28, 2022
Kind
B2
Abstract

Example embodiments of the present invention provide a method, a system, and a computer program product for managing tasks in a system. The method comprises running a first task on a system, wherein the first task has a first priority of execution time and the execution of which first task locks a resource on the system, and running a second task on the system, wherein the second task has a second priority of execution time earlier than the first priority of execution time of the first task and the execution of which second task requires the resource on the system locked by the first task. The system then may promote the first task having the later first priority of execution time to a new priority of execution time at least as early as the second priority of execution time of the second task and resume execution of the first task having the later first priority of execution time.

Claims (86)

1. A method comprising:

obtaining a first task;

queuing the first task in a queue of tasks to be executed by at least one processing device comprising a processor coupled to memory, the queuing of the first task comprising:

determining that the first task has a first task type of a plurality of task types;

determining a first priority of execution time modifier for the first task based at least in part on the first task type; and

adding the first task to the queue with a first priority of execution time, the first priority of execution time being determined based at least in part on the first priority of execution time modifier and a first queue time at which the first task is added to the queue;

obtaining a second task;

queuing the second task in the queue of tasks, the queuing of the second task comprising:

determining that the second task has a second task type of the plurality of task types;

determining a second priority of execution time modifier for the second task based at least in part on the second task type; and

adding the second task to the queue with a second priority of execution time, the second priority of execution time being determined based at least in part on the second priority of execution time modifier and a second queue time at which the second task is added to the queue;

executing the first task from the queue in accordance with the first priority of execution time; and

executing the second task from the queue in accordance with the second priority of execution time;

wherein the second priority of execution time is earlier than the first priority of execution time;

wherein the second queue time is later than the first queue time; and

wherein the method is implemented by the at least one processing device.

2. The method of claim 1 wherein determining the first priority of execution time modifier comprises:

identifying an entry of a plurality of entries in a priority of execution time data structure based at least in part on the first task type, the plurality of entries each comprising a given task type of the plurality of task types and given priority of execution time modifier corresponding to the given task type; and

determining the first priority of execution time modifier based at least in part on the identified entry.

3. The method of claim 1 wherein the first priority of execution time modifier comprises a first amount of time to delay the execution of the first task from the first queue time.

4. The method of claim 3 wherein:

the second priority of execution time modifier comprises a second amount of time to delay the execution of the second task from the second queue time; and

the second amount of time is less than the first amount of time.

5. The method of claim 4 wherein the second amount of time is zero and the second priority of execution time is equal to the second queue time based at least in part on the second amount of time being zero.

6. The method of claim 4 wherein a sum of the second queue time and the second amount of time is less than a sum of the first queue time and the first amount of time.

7. The method of claim 6 further comprising:

determining an execution time at which the first task is executed by the at least one processing device; and

adjusting the first amount of time of the first priority of execution time modifier in a priority of execution time data structure based at least in part on the execution time.

8. The method of claim 7 wherein a sum of the second queue time and the second amount of time is greater than a sum of the first queue time and the adjusted first amount of time.

9. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory, the at least one processing device being configured:

to obtain a first task;

to queue the first task in a queue of tasks to be executed by the at least one processing device, the queuing of the first task comprising:

determining that the first task has a first task type of a plurality of task types;

determining a first priority of execution time modifier for the first task based at least in part on the first task type; and

adding the first task to the queue with a first priority of execution time, the first priority of execution time being determined based at least in part on the first priority of execution time modifier and a first queue time at which the first task is added to the queue;

to obtain a second task;

to queue the second task in the queue of tasks, the queuing of the second task comprising:

determining that the second task has a second task type of the plurality of task types;

determining a second priority of execution time modifier for the second task based at least in part on the second task type; and

adding the second task to the queue with a second priority of execution time, the second priority of execution time being determined based at least in part on the second priority of execution time modifier and a second queue time at which the second task is added to the queue;

to execute the first task from the queue in accordance with the first priority of execution time; and

to execute the second task from the queue in accordance with the second priority of execution time:

wherein the second priority of execution time is earlier than the first priority of execution time; and

wherein the second queue time is later than the first queue time.

10. The apparatus of claim 9 wherein determining the first priority of execution time modifier comprises:

identifying an entry of a plurality of entries in a priority of execution time data structure based at least in part on the first task type, the plurality of entries each comprising a given task type of the plurality of task types and given priority of execution time modifier corresponding to the given task type; and

determining the first priority of execution time modifier based at least in part on the identified entry.

11. The apparatus of claim 9 wherein the first priority of execution time modifier comprises a first amount of time to delay the execution of the first task from the first queue time.

12. The apparatus of claim 11 wherein:

the second priority of execution time modifier comprises a second amount of time to delay the execution of the second task from the second queue time; and

the second amount of time is less than the first amount of time.

13. The apparatus of claim 12 wherein the second amount of time is zero and the second priority of execution time is equal to the second queue time based at least in part on the second amount of time being zero.

14. The apparatus of claim 12 wherein a sum of the second queue time and the second amount of time is less than a sum of the first queue time and the first amount of time.

15. The apparatus of claim 14 wherein the at least one processing device is further configured:

to determine an execution time at which the first task is executed by the at least one processing device; and

to adjust the first amount of time of the first priority of execution time modifier in a priority of execution time data structure based at least in part on the execution time.

16. The apparatus of claim 15 wherein a sum of the second queue time and the second amount of time is greater than a sum of the first queue time and the adjusted first amount of time.

17. 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 the at least one processing device:

to obtain a first task;

to queue the first task in a queue of tasks to be executed by the at least one processing device, the queuing of the first task comprising:

determining that the first task has a first task type of a plurality of task types;

determining a first priority of execution time modifier for the first task based at least in part on the first task type; and

adding the first task to the queue with a first priority of execution time, the first priority of execution time being determined based at least in part on the first priority of execution time modifier and a first queue time at which the first task is added to the queue;

to obtain a second task;

to queue the second task in the queue of tasks, the queuing of the second task comprising:

determining that the second task has a second task type of the plurality of task types;

determining a second priority of execution time modifier for the second task based at least in part on the second task type; and

adding the second task to the queue with a second priority of execution time, the second priority of execution time being determined based at least in part on the second priority of execution time modifier and a second queue time at which the second task is added to the queue;

to execute the first task from the queue in accordance with the first priority of execution time; and

to execute the second task from the queue in accordance with the second priority of execution time;

wherein the second priority of execution time is earlier than the first priority of execution time; and

wherein the second queue time is later than the first queue time.

18. The computer program product of claim 17 wherein determining the first priority of execution time modifier comprises:

identifying an entry of a plurality of entries in a priority of execution time data structure based at least in part on the first task type, the plurality of entries each comprising a given task type of the plurality of task types and given priority of execution time modifier corresponding to the given task type; and

determining the first priority of execution time modifier based at least in part on the identified entry.

19. The computer program product of claim 17 wherein:

the first priority of execution time modifier comprises a first amount of time to delay the execution of the first task from the first queue time;

the second priority of execution time modifier comprises a second amount of time to delay the execution of the second task from the second queue time;

the second amount of time is less than the first amount of time; and

wherein a sum of the second queue time and the second amount of time is less than a sum of the first queue time and the first amount of time.

20. The computer program product of claim 19 wherein:

the program code further causes the at least one processing device:

to determine an execution time at which the first task is executed by the at least one processing device; and

to adjust the first amount of time of the first priority of execution time modifier in a priority of execution time data structure based at least in part on the execution time; and

wherein a sum of the second queue time and the second amount of time is greater than a sum of the first queue time and the adjusted first amount of time.

Assignments (14)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) 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
Reel/Frame 060436/0441 →
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 (052852/0022) 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
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) 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
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
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 INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2020
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052146/0112 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2020
From: VEPRINSKY, ALEXANDR; SHVAIGER, FELIX; KUCHEROV, ANTON; DON, ARIEH
To: EMC CORPORATION
Reel/Frame 052083/0763 →
Continuity (2)
Continuation 14872075 · Sep 30, 2015
Related Publication 20200210240A1 · Jul 2, 2020