Patent ID: 8881168

Claim:
A method for assigning at least one parallel job to a plurality of virtual containers competing for a total capacity of resources for executing one or more tasks of a larger container comprising the plurality of competing virtual containers, wherein the at least one parallel job comprises a plurality of tasks, the method comprising: determining (i) a current utilization of resources for executing the one or more tasks and (ii) a potential free capacity of resources for executing the one or more tasks for each of the plurality of competing virtual containers, wherein: the potential free capacity of resources for executing the one or more tasks is based on total capacity of resources of the larger container for executing the one or more tasks and a comparison of the current utilization of resources for executing the one or more tasks to a corresponding equilibrium capacity of resources for executing the one or more tasks, wherein said equilibrium capacity comprises: a computed container-specific capacity of resources for executing the one or more tasks to which the corresponding competing virtual container is entitled within a limit of full contention for resources from all of the plurality of competing virtual containers, wherein said computed container-specific capacity of resources is based on a relative resource weight assigned to each of the plurality of competing virtual containers; assigning a first task of the plurality of tasks of the at least one parallel job to one of the plurality of competing virtual containers based on (i) a ranking of the potential free capacities, (ii) a relationship between (a) the parallelism of the at least one parallel job and one or more underlying physical cores and (b), the mapping of the plurality of competing virtual containers to the one or more underlying physical cores, and (iii) at least one predefined scheduling policy; and re-determining the potential free capacity of resources for executing, in parallel, one or more tasks of the plurality of tasks of the at least one parallel job for each of the plurality of competing virtual containers, excluding the virtual container to which the first task was assigned, subsequent to said assigning the first task, and repeating said step of assigning for the one or more tasks of the plurality of tasks of the at least one parallel job.