Patent ID: 7752622

Claim:
A method for scheduling computing jobs comprising: receiving a plurality of computing jobs for scheduling on a computing system comprising a plurality of heterogeneous computing nodes, wherein the plurality of computing jobs comprises a plurality of initial priorities and a plurality of resource requirements, and wherein the plurality of heterogeneous computing nodes comprises a plurality of resources; calculating, based on the plurality of resource requirements and the plurality of resources, a plurality of urgency values for the plurality of computing jobs; identifying a maximum value and a minimum value of the plurality of urgency values; calculating a static urgency for a first computing job by dividing an urgency value for the first computing job by a difference between the maximum value and the minimum value of the plurality of urgency values; adding, after calculating, an initial priority of the first computing lob and the static urgency for the first computing job to create a static priority for the first computing job; selecting, from the plurality of computing jobs, the first computing job, 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 first computing node of the plurality of heterogeneous computing nodes able to satisfy a resource requirement of the first computing job during a first time period; determining that a third computing job has previously been scheduled to execute during a second time period, wherein the second time period overlaps the first time period; determining, based on a preemption factor, whether the third computing job is preemptible by the first computing job; preempting execution of the third computing job by the first computing job after determining the third computing job is preemptible; and scheduling execution of the first computing job to take place on the first computing node during the first time period.