Patent ID: 8499303

Claim:
A method comprising: receiving by a hypervisor in a data-processing system a first metric that is associated with a first domain, wherein: (i) the data-processing system comprises a first processor and a second processor, (ii) the first domain comprises a first plurality of tasks that were executed on the data-processing system, and (iii) the first metric is based on the amount of time, during an earlier time interval, that was spent executing tasks of the first domain that had an over priority; when the value of the first metric is above a first threshold, increasing an amount of time to be spent in a later time interval to execute tasks of the first domain that have an over priority; executing by the data-processing system in the later time interval the tasks of the first domain, based on the increased amount of time; receiving, by the data-processing system, a second metric that is associated with the first domain, wherein the second metric is based on the amount of time, during the earlier time interval, that was spent executing tasks of the first domain that had an under priority; receiving, by the data-processing system, a third metric that is associated with a second domain, wherein: (i) the second domain comprises a second plurality of tasks that were executed on the data-processing system, and (ii) the third metric is based on the amount of time, during the earlier time interval, that was spent executing tasks of the second domain that had an under priority; when the value of the second metric is below a second threshold and the value of the third metric is below a third threshold, bin-packing by the hypervisor the first plurality of tasks and the second plurality of tasks into at least a first bin-pack, wherein the bin-packing is based on minimizing the number of processors that are to execute the first plurality of tasks and the second plurality of tasks; and executing by the first processor the tasks in the first bin-pack, wherein: characteristics determined by a priority level of a task comprise: (i) where the task is placed within a queue to await execution; and (ii) how soon after being queued the task will be executed by one of the first processor and the second processor; the queue comprises a boost-priority region; an under-priority region; an over-priority region; and an idle-priority region, in decreasing priority value; a task with the over priority comprises a task that is queued within the over-priority region of the queue; a task with an under priority comprises a task that is queued within the under-priority region of the queue.