IP Library Granted Patent US 10,635,497
Granted Patent B2
US 10,635,497 · App. 15/588,240 · Granted Apr 28, 2020

Method and apparatus for job pre-scheduling by distributed job manager in a digital multi-processor system

Inventors: Kalyana Sundaram Venkataraman (Santa Clara, CA); Tejas Maheshbhai Bhatt (Sunnyvale, CA); Hong Jik Kim (San Jose, CA); Eric Marenger (Montreal, CA); Ahmed Shahid (San Jose, CA); Jason Daniel Zebchuk (Watertown, MA); Gregg Alan Bouchard (Georgetown, TX)
Assignee: Cavium, LLC
G06F9/5044G06F9/4881G06F9/5027
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,635,497
App. No.
15/588,240
Granted
Apr 28, 2020
Kind
B2
Abstract

A method and a system embodying the method for job pre-scheduling in a processing system comprising distributed job management, encompassing: determining a maximum amount of pre-schedulable jobs for each of a plurality of engines; setting for each of the plurality of engines a threshold less than or equal to the maximum amount; pre-scheduling by a scheduler an amount of jobs less than or equal to the threshold to at least one of a plurality of job managers; determining at the at least one of the plurality of job managers managing one of the plurality of engines one of a plurality of data processing devices in order for each pre-scheduled job; and assigning the job to the determined data processing device.

Claims (88)

1. An apparatus for job pre-scheduling in a processing system comprising distributed job management, comprising:

a control software executing on a host setting a threshold parameter less than or equal to a maximum amount parameter determined for each of a plurality of engines by determining the threshold parameter in accordance with a plurality of parameters comprising characteristics of a processing algorithm and characteristics of the processing system; and

a scheduler, communicatively coupled to the host, configured to pre-schedule an amount of jobs less than or equal to the threshold parameter to at least one of a plurality of job managers communicatively coupled to the scheduler; wherein

the at least one of the plurality of job managers managing one of the plurality of engines is configured to:

determine order of at least one of a plurality of data processing devices for each pre-scheduled job; and

assign the pre-scheduled job to the determined data processing device.

2. The apparatus as claimed in claim 1 , further comprising:

a comparator configured to compare the threshold parameter to the maximum amount parameter; and

the scheduler or the at least one of the plurality of job managers further configured to set the threshold parameter equal to the maximum amount parameter if the threshold parameter is greater than the maximum amount parameter.

3. The apparatus as claimed in claim 1 , wherein the control software executing on the host further:

programs the maximum amount parameter and the threshold parameter into the scheduler; and

wherein the scheduler pre-schedules the amount of jobs less than or equal to the threshold parameter to the at least one of the plurality of job managers by being configured to pre-schedule the jobs upon the jobs becoming available for scheduling.

4. The apparatus as claimed in claim 1 , wherein the control software executing on the host further:

programs the maximum amount parameter and the threshold parameter into the at least one of the plurality of job managers; and wherein:

the scheduler requests each of the job managers to provide at least one of available jobs;

the at least one of the plurality of job managers is configured to provide the amount of jobs less than or equal to the threshold parameter; and

the scheduler pre-schedules the provided amount of jobs less than or equal to the threshold parameters to the at least one of the plurality of job managers.

5. The apparatus as claimed in claim 1 , wherein the control software executing on the host further:

programs the maximum amount parameter into the at least one of the plurality of job managers;

programs the threshold parameter into the scheduler; and wherein:

the at least one of the plurality of job managers requests a first amount of jobs less than or equal to the maximum value; and

the scheduler pre-schedules the amount of jobs less than or equal to the threshold parameter in response to the request.

6. The apparatus as claimed in claim 1 , wherein the control software executing on the host further:

programs the maximum amount parameter into the at least one of the plurality of job managers;

programs the threshold parameter into the scheduler; and

wherein the scheduler requests each of the at least one of the plurality of the job managers to provide a requested amount of jobs to be pre-scheduled, and pre-schedules the amount of jobs less than or equal to the threshold parameter in response to the provided amount of jobs less than or equal to the maximum amount parameter by the at least one of the plurality of job managers.

7. The apparatus as claimed in claim 1 , wherein the at least one of the plurality of job managers determines one of the plurality of data processing devices at a managed one of the plurality of engines in order for each pre-scheduled job by being configured to:

determine a number of free job slots for each of the plurality of data processing devices;

assign the pre-scheduled job to a job slot identified by a job_slot_id of the data processing device with the highest number of free job slots; and

recalculate the value of the job_slot_id of the data processing device that was assigned the job.

8. The apparatus as claimed in claim 7 , wherein the at least one of the plurality of job managers assigns the job to the job slot identified by the job_slot_id of the data processing device with the highest number of free job slots, by being configured to:

assign the pre-scheduled job to the job slot identified by the job_slot_id of the data processing device with the highest number of free job slots when a single data processing device has the highest number of free job slots;

determine one of a multiple data processing device in accordance with a pre-determined policy when multiple data processing devices have the highest number of free job slots; and

assign the pre-scheduled job to the job slot identified by the job_slot_id of the determined data processing device.

9. The apparatus as claimed in claim 7 , wherein the at least one of the plurality of job managers recalculates the value of the job_slot_id of the data processing device that was assigned the job, by being configured to:

apply the equations

next_job_slot_id=mod(job_slot_id+1; q )  (Eq. 1)

job_slot_id=next_job_slot_id  (Eq. 2)

wherein mod is a modulo operation; and

q is a number of job slots for the data processing device.

10. The apparatus as claimed in claim 7 , wherein the at least one of the plurality of job managers is further configured to:

initialize for each of the plurality of data processing devices the job_slot_id to a predetermined value.

11. A method for job pre-scheduling in a processing system comprising distributed job management, comprising:

determining a maximum amount parameter of pre-schedulable jobs for each of a plurality of engines;

setting, for each of the plurality of engines, a threshold parameter less than or equal to the maximum amount parameter by determining the threshold parameter in accordance with a plurality of parameters comprising characteristics of a processing algorithm and characteristics of the processing system;

pre-scheduling by a scheduler an amount of jobs less than or equal to the threshold parameter to at least one of a plurality of job managers;

determining, by the at least one of the plurality of job managers managing one of the plurality of engines order of at least one of a plurality of data processing devices for each pre-scheduled job; and

assigning the pre-scheduled job to the determined data processing device.

12. The method as claimed in claim 11 , further comprising:

comparing the threshold parameter to the maximum amount parameter; and

setting the threshold parameter equal to the maximum amount parameter if the threshold parameter is greater than the maximum amount parameter.

13. The method as claimed in claim 11 , further comprising:

programming the maximum amount parameter and the threshold parameter into the scheduler; and

wherein the pre-scheduling by the scheduler the amount of jobs less than or equal to the threshold parameter to the at least one of a plurality of job managers comprises pre-scheduling the jobs upon the jobs becoming available for scheduling.

14. The method as claimed in claim 11 , further comprising:

programming the maximum amount parameter and the threshold parameter into the at least one of the plurality of job managers; and

wherein the pre-scheduling by the scheduler the amount of jobs less than or equal to the threshold parameter to at least one of a plurality of job managers comprises:

requesting by the scheduler each of the job managers at least one of available jobs;

providing by the at least one of the plurality of job managers the amount of jobs less than or equal to the threshold parameter; and

pre-scheduling the provided amount of jobs less than or equal to the threshold parameter the at least one of the plurality of job managers.

15. The method as claimed in claim 11 , further comprising:

programming the maximum amount parameter into the at least one of the plurality of job managers;

programming the threshold parameter into the scheduler; and

wherein the pre-scheduling by the scheduler the amount of jobs less than or equal to the threshold parameter to the at least one of a plurality of job managers comprises:

requesting by the at least one of the plurality of job manager a first amount of jobs less than or equal to the maximum value parameter; and

pre-scheduling the amount of jobs less than or equal to the threshold parameter in response to the request.

16. The method as claimed in claim 11 , further comprising:

programming the maximum amount parameter into the at least one of the plurality of job managers;

programming the threshold parameter into the scheduler; and

wherein the pre-scheduling by the scheduler the amount of jobs less than or equal to the threshold parameter to at least one of a plurality of job managers comprises:

requesting by the scheduler each of the at least one of the plurality of job managers to provide a requested an amount of jobs to be pre-scheduled; and

pre-scheduling by the scheduler the amount of jobs less than or equal to the threshold parameter in response to the provided an amount of jobs less than or equal to the maximum amount parameter by the at least one of the job managers.

17. The method as claimed in claim 11 , wherein the determining, by the at least one of the plurality of job managers managing one of the plurality of engines, one of a plurality of data processing devices in order for each pre-scheduled job comprises:

determining a number of free job slots for each of the plurality of data processing devices;

assigning the pre-scheduled job to a job slot identified by a job_slot_id of the data processing device with the highest number of free job slots; and

recalculating the value of the job_slot_id of the data processing device that was assigned the job.

18. The method as claimed in claim 17 , wherein the assigning the job to the job slot identified by the job_slot_id of the data processing device with the highest number of free job slots, comprises:

assigning the pre-scheduled job to the job slot identified by the job_slot_id of the data processing device with the highest number of free job slots when a single data processing device has the highest number of free job slots;

determining one of a multiple data processing device in accordance with a pre-determined policy when multiple data processing devices have the highest number of free job slots; and

assigning the pre-scheduled job to the job slot identified by the job_slot_id of the determined data processing device.

19. The method as claimed in claim 17 , wherein the recalculating the value of the job_slot_id of the data processing device that was assigned the job, comprises:

applying the equations

next_job_slot_id=mod(job_slot_id+1; q )  (Eq. 1)

job_slot_id=next_job_slot_id  (Eq. 2)

wherein mod is a modulo operation; and

q is a number of job slots for the data processing device.

20. The method as claimed in claim 17 , further comprising:

initializing for each of the plurality of data processing devices the job_slot_id to a predetermined value.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Dec 12, 2019
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 051260/0567 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2017
From: VENKATARAMAN, KALYANA SUNDARAM; BHATT, TEJAS MAHESHBHAI; BOUCHARD, GREGG ALAN; KIM, HONG JIK; MARENGER, ERIC; SHAHID, AHMED; ZEBCHUK, JASON DANIEL
To: CAVIUM, INC.
Reel/Frame 042867/0390 →
Continuity (1)
Related Publication 20180321983A1 · Nov 8, 2018
Cited By (1)
US 12,699,591