Method and apparatus for multi-dimensional priority determination for job scheduling
First Claim
1. A method for scheduling a plurality of computing jobs during a scheduling event on a computing system comprising a plurality of heterogeneous computing nodes, wherein the plurality of computing jobs comprise a plurality of resource requirements, the method comprising:
- receiving, by a scheduler of the computing system, the plurality of computing jobs comprising an active job and a pending job, wherein the active job is executing prior to the scheduling event on a first node of the plurality of heterogeneous computing nodes in accordance with an existing schedule, and wherein the pending job has not yet begun execution;
obtaining a plurality of initial priority values for the plurality of computing jobs;
identifying a maximum initial priority value and a minimum initial priority value from the plurality of initial priority values;
calculating a priority component for a first computing job by dividing an initial priority value for the first computing job by a difference between the maximum initial priority value and the minimum initial priority value;
calculating, based on the plurality of resource requirements, a plurality of urgency values for the plurality of computing jobs;
identifying a maximum urgency value and a minimum urgency value of the plurality of urgency values;
calculating an urgency component for the first computing job by dividing an urgency value for the first computing job by a difference between the maximum urgency value and the minimum urgency value;
calculating a static priority for the first computing job by adding the priority component and the urgency component;
selecting, after calculating the static priority for the first computing job, the active job from the plurality of computing jobs and scheduling the active job on the first node according to the existing schedule;
selecting, after placing the active job on the first node according to the existing schedule, the first computing job from the plurality of computing jobs, wherein the static priority of the first computing job exceeds a static priority of a second computing job in the plurality of computing jobs;
identifying a subset of the plurality of resource requirements corresponding to the first computing job;
identifying a second node of the plurality of heterogeneous computing nodes having a plurality of resources to satisfy the subset of the plurality of resource requirements corresponding to the first computing job;
predicting, for the second node, an earliest completion time for the first computing job, taking into account already scheduled jobs on the second node; and
scheduling execution of the first computing job on the second node based on the earliest completion time.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for scheduling computing jobs in a scheduling event includes calculating a static priority of each computing job ready for scheduling, and then selecting a first computing job having the highest static priority as compared to at least one other computing jobs ready for scheduling, the first computing job being associated with at least one required resource. Further, a subset of computing nodes able to satisfy the at least one required resource are identified, and predictions are made for each node of an earliest predicted completion time that the first computing job can be completed on each of those nodes, taking into account already scheduled jobs. Finally, execution of the first computing job is scheduled on the node having the earliest predicted completion time.
51 Citations
17 Claims
-
1. A method for scheduling a plurality of computing jobs during a scheduling event on a computing system comprising a plurality of heterogeneous computing nodes, wherein the plurality of computing jobs comprise a plurality of resource requirements, the method comprising:
-
receiving, by a scheduler of the computing system, the plurality of computing jobs comprising an active job and a pending job, wherein the active job is executing prior to the scheduling event on a first node of the plurality of heterogeneous computing nodes in accordance with an existing schedule, and wherein the pending job has not yet begun execution; obtaining a plurality of initial priority values for the plurality of computing jobs; identifying a maximum initial priority value and a minimum initial priority value from the plurality of initial priority values; calculating a priority component for a first computing job by dividing an initial priority value for the first computing job by a difference between the maximum initial priority value and the minimum initial priority value; calculating, based on the plurality of resource requirements, a plurality of urgency values for the plurality of computing jobs; identifying a maximum urgency value and a minimum urgency value of the plurality of urgency values; calculating an urgency component for the first computing job by dividing an urgency value for the first computing job by a difference between the maximum urgency value and the minimum urgency value; calculating a static priority for the first computing job by adding the priority component and the urgency component; selecting, after calculating the static priority for the first computing job, the active job from the plurality of computing jobs and scheduling the active job on the first node according to the existing schedule; selecting, after placing the active job on the first node according to the existing schedule, the first computing job from the plurality of computing jobs, wherein the static priority of the first computing job exceeds a static priority of a second computing job in the plurality of computing jobs; identifying a subset of the plurality of resource requirements corresponding to the first computing job; identifying a second node of the plurality of heterogeneous computing nodes having a plurality of resources to satisfy the subset of the plurality of resource requirements corresponding to the first computing job; predicting, for the second node, an earliest completion time for the first computing job, taking into account already scheduled jobs on the second node; and scheduling execution of the first computing job on the second node based on the earliest completion time. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computing system for scheduling a plurality of computing jobs having a plurality of resource requirements during a scheduling event, comprising:
-
a plurality of heterogeneous computing nodes for executing the plurality of computing jobs; and a scheduler configured to schedule the plurality of computing jobs by; receiving the plurality of computing jobs comprising an active job and a pending job, wherein the active job is executing prior to the scheduling event on a first node of the plurality of heterogeneous computing nodes in accordance with an existing schedule, and wherein the pending job has not yet begun execution; obtaining a plurality of initial priority values for the plurality of computing jobs; identifying a maximum initial priority value and a minimum initial priority value from the plurality of initial priority values; calculating a priority component for a first computing job by dividing an initial priority value for the first computing job by a difference between the maximum initial priority value and the minimum initial priority value; calculating, based on the plurality of resource requirements, a plurality of urgency values for the plurality of computing jobs; identifying a maximum urgency value and a minimum urgency value of the plurality of urgency values; calculating an urgency component for the first computing job by dividing an urgency value for the first computing job by a difference between the maximum urgency value and the minimum urgency value; calculating a static priority for the first computing job by adding the priority component and the urgency component; selecting, after calculating the static priority for the first computing job, the active job from the plurality of computing jobs and scheduling the active job on the first node according to the existing schedule; selecting, after placing the active job on the first node according to the existing schedule, the first computing job from the plurality of computing jobs, wherein the static priority of the first computing job exceeds a static priority of a second computing job in the plurality of computing jobs; identifying a subset of the plurality of resource requirements corresponding to the first computing job; identifying a second node of the plurality of heterogeneous computing nodes having a plurality of resources to satisfy the subset of the plurality of resource requirements corresponding to the first computing job; predicting, for the second node, an earliest completion time for the first computing job, taking into account already scheduled jobs on the second node; and scheduling execution of the first computing job on the second node based on the earliest completion time. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A computing program product having instructions disposed thereon for scheduling a plurality of computing job during a scheduling event on a computing system comprising a plurality of heterogeneous computing nodes, wherein the plurality of computing jobs comprise a plurality of resource requirements, when executed by a processor the instructions perform a method comprising:
-
receiving, by a scheduler of the computing system, the plurality of computing jobs comprising an active job and a pending job, wherein the active job is executing prior to the scheduling event on a first node of the plurality of heterogeneous computing nodes in accordance with an existing schedule, and wherein the pending job has not yet begun execution; obtaining a plurality of initial priority values for the plurality of computing jobs; identifying a maximum initial priority value and a minimum initial priority value from the plurality of initial priority values; calculating a priority component for a first computing job by dividing an initial priority value for the first computing job by a difference between the maximum initial priority value and the minimum initial priority value; calculating, based on the plurality of resource requirements, a plurality of urgency values for the plurality of computing jobs; identifying a maximum urgency value and a minimum urgency value of the plurality of urgency values; calculating an urgency component for the first computing job by dividing an urgency value for the first computing job by a difference between the maximum urgency value and the minimum urgency value; calculating a static priority for the first computing job by adding the priority component and the urgency component; selecting, after calculating the static priority for the first computing job, the active job from the plurality of computing jobs and scheduling the active job on the first node according to the existing schedule; selecting, after placing the active job on the first node according to the existing schedule, the first computing job from the plurality of computing jobs, wherein the static priority of the first computing job exceeds a static priority of a second computing job in the plurality of computing jobs; identifying a subset of the plurality of resource requirements corresponding to the first computing job; identifying a second node of the plurality of heterogeneous computing nodes having a plurality of resources to satisfy the subset of the plurality of resource requirements corresponding to the first computing job; predicting, for the second node, an earliest completion time for the first computing job, taking into account already scheduled jobs on the second node; and scheduling execution of the first computing job on the second node based on the earliest completion time. - View Dependent Claims (14, 15, 16, 17)
-
Specification