IP Library Granted Patent US 10,216,541
Granted Patent B2
US 10,216,541 · App. 15/391,717 · Granted Feb 26, 2019

Scheduler of processes having timed predictions of computing loads

Inventors: Eric Le Bars (Geveze, FR); Arnaud Mahe (Poligne, FR); Christophe Berthelot (Erce Pres Liffre, FR)
Assignee: Harmonic, Inc.
G06F9/4887G06F9/505G06F9/5077H04N19/426H04N19/40
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 10,216,541
App. No.
15/391,717
Granted
Feb 26, 2019
Kind
B2
Abstract

A scheduler of computer processes. The scheduler comprises first processing logic configured to obtain predictions of a computing load of a computer process to allocate. Predictions are associated with a period of time. The processing logic retrieves predictions of available computing capacities for the period of time, and determines, based on the predictions, a processing capability to allocate at least one computer process during the period of time. The scheduler may comprise second processing logic configured to create at least one Operating-System-Level virtual environment, for a computer program, that has a computing capacity equal to or higher than the predicted computing load of at least one computer process to allocate at a start of the period of time. The second processing logic may adapt the computing capacity of an Operating-System-Level virtual environment to the predictions of the computing load of at least one computer process during the period of time.

Claims (68)

1. A non-transitory computer-readable storage medium storing one or more sequences of instructions for a scheduler of computer processes to be executed upon a cluster of processing capabilities, wherein execution of the one or more sequences of instructions cause:

obtaining predictions of a computing load of at least one computer process to allocate, wherein said predictions are associated with a period of time;

retrieving predictions of available computing capacities of the cluster of processing capabilities for the period of time;

determining, based on the predictions of the computing load for the period of time and the predictions of the available computing capacities for the period of time, a processing capability to allocate said at least one computer process during said period of time;

creating at least one Operating-System-Level virtual environment for said at least one computer process, said at least one Operating-System-Level virtual environment having a computing capacity equal to or higher than at least one of said predictions of the computing load of said at least one computer process to allocate at a start of the period of time; and

adapting the computing capacity of said at least one Operating-System-Level virtual environment to the predictions of the computing load of said at least one computer process during said period of time.

2. The non-transitory computer-readable storage medium of claim 1 , wherein execution of the one or more sequences of instructions further cause:

calculating predictions of available computing capacities of the processing capabilities for the period of time based on computing capacities of the processing capabilities and predictions of computing capabilities of Operating-System-Level virtual environments running on computing capabilities for the period of time.

3. The non-transitory computer-readable storage medium of claim 1 , wherein said at least one computer process is a multimedia process comprising real time video encoding or transcoding, and wherein said predictions of the computing load of the process are based at least on predictions of a target index of video quality to deliver in real time.

4. The non-transitory computer-readable storage medium of claim 3 , wherein execution of the one or more sequences of instructions further cause:

calculating (a) the predictions of computing load of said multimedia process based on a resolution and a number of frames per second of video, and (b) predictions of target video quality to deliver in real time.

5. The non-transitory computer-readable storage medium of claim 3 , wherein execution of the one or more sequences of instructions further cause:

calculating (a) the predictions of computing load of said multimedia process based on a resolution, a number of frames per second, and a type of the video, and (b) predictions of target video quality to deliver in real time.

6. The non-transitory computer-readable storage medium of claim 3 , wherein the video during the period of time belongs to types of programs which have already been broadcasted, and wherein execution of the one or more sequences of instructions further cause:

calculating the predictions of computing load of said multimedia process based on the computing load of previous encoding or transcoding of this type of program at predicted target qualities.

7. The non-transitory computer-readable storage medium of claim 3 , wherein said at least one computer process executes a video encoding or transcoding process which is able to deliver video in real time while adapting its encoding quality to available computing capacities.

8. The non-transitory computer-readable storage medium of claim 1 , wherein the computing load is a CPU load.

9. The non-transitory computer-readable storage medium of claim 1 , wherein execution of the one or more sequences of instructions further cause:

selecting a processing capability to allocate said at least one computer process in order that a sum of predictions of computing capabilities of Operating-System-Level virtual environment running on a processing capability never exceeds a computing capacity of said processing capability for the period of time.

10. The non-transitory computer-readable storage medium of claim 9 , wherein execution of the one or more sequences of instructions further cause:

formulating one of a multiple knapsack problem or a bin packing problem based on the predictions of computing loads of said at least one computer process and the predictions of computing capabilities of Operating-System-Level virtual environment running on processing capabilities;

programmatically solving said one of a multiple knapsack problem or a bin packing problem; and

selecting, based on said solution to said one of a multiple knapsack problem or a bin packaging problem, a processing capability on which to allocate said at least one computer process.

11. The non-transitory computer-readable storage medium of claim 1 , wherein execution of the one or more sequences of instructions further cause:

upon a modification of the predictions of the computing load of said at least one computer process for a period of time, verifying whether a sum of predictions of computing capabilities of Operating-System-Level virtual environments running on a processing capability exceeds a computing capacity of said processing capability for the period of time; and

upon verifying that the sum of predictions does exceed said computing capacity of said processing capability for the period of time, calculating a re-allocation of Operating-System-Level virtual environments on physical machines.

12. The non-transitory computer-readable storage medium of claim 11 , wherein execution of the one or more sequences of instructions further cause:

formulating one of a multiple knapsack problem or a bin packing problem based on the predictions of computing loads of said at least one computer process and the predictions of computing capabilities of Operating-System-Level virtual environment running on processing capabilities;

programmatically solving said one of a multiple knapsack problem or a bin packing problem; and

selecting, based on said solution to said one of a multiple knapsack problem or a bin packaging problem, a processing capability on which to reallocate said at least one computer process.

13. An apparatus having a scheduler of computer processes to be executed upon a cluster of processing capabilities, comprising:

one or more processors; and

one or more non-transitory computer-readable storage mediums storing one or more sequences of instructions, which when executed, cause:

obtaining predictions of a computing load of at least one computer process to allocate, wherein said predictions are associated with a period of time;

retrieving predictions of available computing capacities of the cluster of processing capabilities for the period of time;

determining, based on the predictions of the computing load for the period of time and the predictions of the available computing capacities for the period of time, a processing capability to allocate said at least one computer process during said period of time;

creating at least one Operating-System-Level virtual environment for said at least one computer process, said at least one Operating-System-Level virtual environment having a computing capacity equal to or higher than at least one of said predictions of the computing load of said at least one computer process to allocate at a start of the period of time; and

adapting the computing capacity of said at least one Operating-System-Level virtual environment to the predictions of the computing load of said at least one computer process during said period of time.

14. The apparatus of claim 13 , wherein execution of the one or more sequences of instructions further cause:

calculating predictions of available computing capacities of the processing capabilities for the period of time based on computing capacities of the processing capabilities and predictions of computing capabilities of Operating-System-Level virtual environments running on computing capabilities for the period of time.

15. The apparatus of claim 13 , wherein said at least one computer process is a multimedia process comprising real time video encoding or transcoding, and wherein said predictions of the computing load of the process are based at least on predictions of a target index of video quality to deliver in real time.

16. The apparatus of claim 15 , wherein execution of the one or more sequences of instructions further cause:

calculating (a) the predictions of computing load of said multimedia process based on a resolution and a number of frames per second of video, and (b) predictions of target video quality to deliver in real time.

17. The apparatus of claim 15 , wherein execution of the one or more sequences of instructions further cause:

calculating (a) the predictions of computing load of said multimedia process based on a resolution, a number of frames per second, and a type of the video, and (b) predictions of target video quality to deliver in real time.

18. The apparatus of claim 15 , wherein the video during the period of time belongs to types of programs which have already been broadcasted, and wherein execution of the one or more sequences of instructions further cause:

calculating the predictions of computing load of said multimedia process based on the computing load of previous encoding or transcoding of this type of program at predicted target qualities.

19. The apparatus of claim 15 , wherein said at least one computer process executes a video encoding or transcoding process which is able to deliver video in real time while adapting its encoding quality to available computing capacities.

20. The apparatus of claim 13 , wherein the computing load is a CPU load.

21. The apparatus of claim 13 , wherein execution of the one or more sequences of instructions further cause:

selecting a processing capability to allocate said at least one computer process in order that a sum of predictions of computing capabilities of Operating-System-Level virtual environment running on a processing capability never exceeds a computing capacity of said processing capability for the period of time.

22. The apparatus of claim 21 , wherein execution of the one or more sequences of instructions further cause:

formulating one of a multiple knapsack problem or a bin packing problem based on the predictions of computing loads of said at least one computer process and the predictions of computing capabilities of Operating-System-Level virtual environment running on processing capabilities;

programmatically solving said one of a multiple knapsack problem or a bin packing problem; and

selecting, based on said solution to said one of a multiple knapsack problem or a bin packaging problem, a processing capability on which to allocate said at least one computer process.

23. The apparatus of claim 13 , wherein execution of the one or more sequences of instructions further cause:

upon a modification of the predictions of the computing load of said at least one computer process for a period of time, verifying whether a sum of predictions of computing capabilities of Operating-System-Level virtual environments running on a processing capability exceeds a computing capacity of said processing capability for the period of time; and

upon verifying that the sum of predictions does exceed said computing capacity of said processing capability for the period of time, calculating a re-allocation of Operating-System-Level virtual environments on physical machines.

24. The apparatus of claim 23 , wherein execution of the one or more sequences of instructions further cause:

formulating one of a multiple knapsack problem or a bin packing problem based on the predictions of computing loads of said at least one computer process and the predictions of computing capabilities of Operating-System-Level virtual environment running on processing capabilities;

programmatically solving said one of a multiple knapsack problem or a bin packing problem; and

selecting, based on said solution to said one of a multiple knapsack problem or a bin packaging problem, a processing capability on which to reallocate said at least one computer process.

25. A method for scheduling computer processes to be executed upon a cluster of processing capabilities, comprising:

obtaining predictions of a computing load of at least one computer process to allocate, wherein said predictions are associated with a period of time;

retrieving predictions of available computing capacities of the cluster of processing capabilities for the period of time;

determining, based on the predictions of the computing load for the period of time and the predictions of the available computing capacities for the period of time, a processing capability to allocate said at least one computer process during said period of time;

creating at least one Operating-System-Level virtual environment for said at least one computer process, said at least one Operating-System-Level virtual environment having a computing capacity equal to or higher than at least one of said predictions of the computing load of said at least one computer process to allocate at a start of the period of time; and

adapting the computing capacity of said at least one Operating-System-Level virtual environment to the predictions of the computing load of said at least one computer process during said period of time.

Assignments (4)
SECURITY INTEREST Recorded Dec 21, 2023
From: HARMONIC INC.
To: CITIBANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 066090/0906 →
RELEASE OF SECURITY INTEREST Recorded Dec 21, 2023
From: JPMORGAN CHASE BANK, N.A.
To: HARMONIC INC.
Reel/Frame 066092/0633 →
SECURITY INTEREST Recorded Dec 20, 2019
From: HARMONIC INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 051395/0836 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2017
From: LE BARS, ERIC; MAHE, ARNAUD; BERTHELOT, CHRISTOPHE
To: HARMONIC, INC.
Reel/Frame 043813/0726 →
Priority Claims (1)
EP 15307162 · Dec 29, 2015 · regional
Continuity (1)
Related Publication 20170185450A1 · Jun 29, 2017
Cited By (1)
US 12,681,754