A computer-executable method for provisioning physical resources shared by a plurality of jobs, comprising: monitoring the resource needs for each of the jobs; establishing resource-usage models for the jobs based on the monitoring, wherein a resource-usage model comprises an observed probability distribution function for one or more resources required by the jobs within a time interval; ranking the jobs based on quality of service (QoS) resource requirements associated with the jobs, wherein the jobs are ranked in descending order of QoS level, a QoS level for a job being the acceptable probability that the job will not be fully provisioned with its resource requirements during the time interval; and provisioning the jobs for a predetermined time interval in such a way that any unused reservations associated with a first subset of jobs having higher QoS rankings are distributed to other remaining jobs with preference given to a second subset of jobs having a highest QoS ranking among the other remaining jobs, wherein provisioning the jobs involves making reservations for the jobs based on the resource-usage model and corresponding QoS resource requirements associated with the jobs, and further involves; sorting the jobs in descending order based on QoS rankings; and iteratively, starting from a job having a highest QoS ranking, forming a subgroup by adding a next-in-line job to a previously formed subgroup; establishing a resource-usage model for the subgroup; and determining a required amount of resources needed by the subgroup based on the resource-usage model for the subgroup and QoS resource requirement associated with the next-in-line job, and; making a reservation for the next-in-line job based on a difference between the required amount of resources and reservations made for the previously formed subgroup. monitoring the resource needs for each of the jobs; establishing resource-usage models for the jobs based on the monitoring, wherein a resource-usage model comprises an observed probability distribution function for one or more resources required by the jobs within a time interval; ranking the jobs based on quality of service (QoS) resource requirements associated with the jobs, wherein the jobs are ranked in descending order of QoS level, a QoS level for a job being the acceptable probability that the job will not be fully provisioned with its resource requirements during the time interval; and provisioning the jobs for a predetermined time interval in such a way that any unused reservations associated with a first subset of jobs having higher QoS rankings are distributed to other remaining jobs with preference given to a second subset of jobs having a highest QoS ranking among the other remaining jobs, wherein provisioning the jobs involves making reservations for the jobs based on the resource-usage model and corresponding QoS resource requirements associated with the jobs, and further involves; sorting the jobs in descending order based on QoS rankings; and iteratively, starting from a job having a highest QoS ranking, forming a subgroup by adding a next-in-line job to a previously formed subgroup; establishing a resource-usage model for the subgroup; and determining a required amount of resources needed by the subgroup based on the resource-usage model for the subgroup and QoS resource requirement associated with the next-in-line job, and; making a reservation for the next-in-line job based on a difference between the required amount of resources and reservations made for the previously formed subgroup.