IP Library Granted Patent US 12,229,594
Granted Patent B2
US 12,229,594 · App. 18/340,281 · Granted Feb 18, 2025

Scheduling multiple processes with varying delay sensitivity

Inventors: Jered J. Floyd (Boston, MA); Ali Ok (Ankara, TR)
Assignee: Red Hat, Inc.
G06F9/4881G06F9/48G06F9/4806G06F9/4843G06F9/50G06F9/5038G06F9/505G06N20/00
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 12,229,594
App. No.
18/340,281
Granted
Feb 18, 2025
Kind
B2
Abstract

Scheduling multiple processes with varying delay sensitivity is disclosed herein. In one example, a processor device iteratively executes a processing workload that includes a fixed-execution-time process and an adjustable-execution-time process. During each iteration of the processing workload, the processor device first determines, for that iteration, a maximum cycle time interval during which both the fixed-execution-time process and an adjustable-execution-time process will execute. The processor device further determines a maximum execution time interval for the adjustable-execution-time process, based on the maximum cycle time interval and a fixed execution time interval for the fixed-execution-time process. The processor device then modifies an adjustable execution time interval for adjustable-execution-time process in the current iteration of the processing workload based on the maximum execution time interval.

Claims (83)

1. A method comprising:

iteratively performing, by a processor device of a computing device, a processing workload, wherein:

each iteration of the processing workload is performed within a maximum cycle time interval; and

the processing workload comprises a first process and a second process; and

during each iteration of the processing workload:

starting a first timer when execution of the first process begins;

pausing the first timer when the execution of the first process ends;

determining, for the iteration, an amount of time taken to execute the first process based on when the first timer started and the first timer paused;

calculating, for the iteration, a maximum execution time interval for the second process based on a difference between the maximum cycle time interval and the amount of time taken to execute the first process; and

modifying, for the iteration, an adjustable execution time interval for the second process such that the second process is performed within the maximum execution time interval, wherein modifying the adjustable execution time interval comprises:

selecting one or more of:

one of a plurality of different algorithms for performing functionality of the second process; or

one of a plurality of different quality parameters for the second process.

2. The method of claim 1 , wherein modifying the adjustable execution time interval for the second process such that the second process is performed within the maximum execution time interval for the second process comprises:

starting a second timer when execution of the second process begins;

stopping the second timer when the execution of the second process ends;

determining an amount of time taken to execute the second process based on when the second timer started and the second timer stopped;

recording the amount of time taken to execute the second process; and

modifying the adjustable execution time interval for the second process based on a recorded execution time taken to execute the second process in a previous iteration of the processing workload.

3. The method of claim 2 , further comprising:

subsequent to recording the amount of time taken to execute the second process, determining that the maximum execution time interval has been reached;

restarting the first timer;

providing a result corresponding to the iteration;

stopping the first timer; and

recording the amount of time taken to execute the first process.

4. The method of claim 1 , further comprising, during each iteration of the processing workload:

determining an amount of time taken to execute the first process based on when the first timer started and the first timer paused; and

updating a moving average of first process execution times with the amount of time taken to execute the first process;

wherein the maximum execution time interval for the second process comprises a difference between the maximum cycle time interval and the moving average of first process execution times.

5. The method of claim 4 , wherein the moving average of first process execution times comprises a weighted moving average of first process execution times.

6. The method of claim 1 , further comprising, during each iteration of the processing workload and subsequent to modifying the adjustable execution time interval:

determining that a current execution of the second process will not complete during the adjustable execution time interval for the second process; and

persisting an internal state of the second process for continued execution during a next iteration of the processing workload.

7. The method of claim 6 , further comprising, prior to persisting the internal state of the second process, providing one of a most recent complete result of the second process and a partial result of the second process.

8. The method of claim 1 , wherein the first process is performed within a fixed execution time interval and the second process is performed within the adjustable execution time interval.

9. The method of claim 1 , wherein the maximum execution time interval for the second process comprises a difference between the maximum cycle time interval and one or more of a configured execution time of the first process and a predicted execution time of the first process generated by a machine learning (ML) model.

10. A computing device, comprising:

a system memory; and

a processor device coupled to the system memory to:

iteratively perform a processing workload, wherein:

each iteration of the processing workload is performed within a maximum cycle time interval; and

the processing workload comprises a first process and a second process; and

during each iteration of the processing workload:

start a first timer when execution of the first process begins;

pause the first timer when the execution of the first process ends;

determine, for the iteration, an amount of time taken to execute the first process based on when the first timer started and the first timer paused;

calculate, for the iteration, a maximum execution time interval for the second process based on a difference between the maximum cycle time interval and the amount of time taken to execute the first process; and

modify, for the iteration, an adjustable execution time interval for the second process such that the second process is performed within the maximum execution time interval, wherein, to modify the adjustable execution time interval, the processor device is to:

select one or more of:

 one of a plurality of different algorithms for performing functionality of the second process: or

 one of a plurality of different quality parameters for the second process.

11. The computing device of claim 10 , wherein to modify the adjustable execution time interval for the second process such that the second process is performed within the maximum execution time interval for the second process is to:

start a second timer when execution of the second process begins;

stop the second timer when the execution of the second process ends;

determine an amount of time taken to execute the second process based on when the second timer started and the second timer stopped;

record the amount of time taken to execute the second process; and

modify the adjustable execution time interval for the second process based on a recorded execution time taken to execute the second process in a previous iteration of the processing workload.

12. The computing device of claim 11 , wherein the processor device is further to:

subsequent to recording the amount of time taken to execute the second process, determine that the maximum execution time interval has been reached;

restart the first timer;

provide a result corresponding to the iteration;

stop the first timer; and

record the amount of time taken to execute the first process.

13. The computing device of claim 10 , wherein the processor device is further to, during each iteration of the processing workload:

determine an amount of time taken to execute the first process based on when the first timer started and the first timer paused; and

update a moving average of first process execution times with the amount of time taken to execute the first process;

wherein the maximum execution time interval for the second process comprises a difference between the maximum cycle time interval and the moving average of first process execution times.

14. The computing device of claim 10 , wherein the processor device is further to, during each iteration of the processing workload and subsequent to modifying the adjustable execution time interval:

determine that a current execution of the second process will not complete during the adjustable execution time interval for the second process; and

persist an internal state of the second process for continued execution during a next iteration of the processing workload.

15. The computing device of claim 10 , wherein the first process is performed within a fixed execution time interval and the second process is performed within the adjustable execution time interval.

16. A non-transitory computer-readable medium having stored thereon computer-executable instructions which, when executed by a processor device, cause the processor device to:

iteratively perform a processing workload, wherein:

each iteration of the processing workload is performed within a maximum cycle time interval; and

the processing workload comprises a first process and a second process; and

during each iteration of the processing workload:

start a first timer when execution of the first process begins;

pause the first timer when the execution of the first process ends;

determine, for the iteration, an amount of time taken to execute the first process based on when the first timer started and the first timer paused;

calculate, for the iteration, a maximum execution time interval for the second process based on a difference between the maximum cycle time interval and the amount of time taken to execute the first process;

modify, for the iteration, an adjustable execution time interval for the second process based on the maximum execution time interval,

determine, for the iteration, that a current execution of the second process will not complete during the adjustable execution time interval for the second process; and

persist, for the iteration, an internal state of the second process for continued execution during a next iteration of the processing workload.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2023
From: FLOYD, JERED J.; OK, ALI
To: RED HAT, INC.
Reel/Frame 064042/0887 →