1. A method comprising: defining a plurality of resource pools including a first resource pool and a second resource pool, where each resource pool in the plurality of resource pools has a plurality of assigned resources; receiving a plurality of jobs to be executed; for each job of the plurality of jobs, assigning a respective resource pool, of the plurality of resource pools, to be used in completing the job; determining a preliminary schedule for executing the jobs on their respective resource pools; determining whether the preliminary schedule is to cause any jobs to miss service level agreement (SLA) deadlines corresponding to the job; executing the plurality of jobs on their respectively assigned resource pools; on condition that a first job, of the plurality of jobs and assigned to the first resource pool, is to miss an associated SLA deadline under the preliminary schedule, re-assigning a first resource from the second resource pool to the first resource pool during at least some of a time of an execution of the first job by the first resource pool; and after the execution of the first job by the first resource pool, re-assigning the first resource back to the second resource pool; wherein: the re-assignment of the first resource to the first pool occurs immediately before the execution of the first job; and the re-assignment of the first resource to the second pool occurs immediately after the execution of the first job.