A method for scheduling computing jobs in a scheduling event includes
selecting a computing job that is ready for scheduling the first
computing job being associated with at least one required resource. A
computing node is identified that is able to satisfy the at least one
required resource during a first time period having a start time and an
end time. A second computing job is determined to have previously been
scheduled to execute during a second time period; wherein the second time
period overlaps the first time period. At a time prior to scheduling the
first computing job, a determination is made as to whether the second
computing job is preemptible by the first computing job. If so, execution
of the second computing job is preempted by the first computing job if
the second computing job has been determined to be preemptible by the
first computing job if the priority of the first computing job is greater
than the priority of the second computing job by at least a threshold
amount, and if preempting the second job frees at least one of the at
least one required resource for use by the first computing job. Execution
of the first computing job is scheduled to take place on a first
computing node during the first time period, where a start time
associated with the first time period is a time selected from the group
consisting of a current time and a future time.