Patent ID: 7984447

Claim:
A method for scheduling a plurality of computing jobs in a computing system comprising: associating each of the plurality of computing jobs in the system with a group of a plurality of groups; associating each group of the plurality of groups with a minimum promised utilization value; determining a present utilization value for each group of the plurality of groups having at least one job ready for scheduling, the at least one job being associated with at least one required resource, the present utilization value for a given group of the plurality of groups comprising a total amount of the at least one required resource consumed by presently executing jobs associated with the given group divided by the minimum promised utilization value associated with the given group; calculating a static priority of each of the computing jobs ready for scheduling; selecting a first computing job of the plurality of computing jobs that is ready for scheduling, wherein the first computing job is the computing job having a highest static priority within a group of the plurality of groups having a lowest present utilization value; identifying a subset of computing nodes able to satisfy the at least one required resource associated with the first computing job; predicting, for each node within the subset of computing nodes, an earliest predicted completion time for the first computing job, taking into account already scheduled jobs; and scheduling execution of the first computing job on a node within the subset of computing nodes having the earliest predicted completion time, wherein the execution of the first computing job is scheduled to occur during a first time period, wherein the first time period begins at a time selected from the group consisting of a current time and a future time.