Patent ID: 9442760
Filing Date: 2016-09-13
CPC Classification: G06F

Claim Text:
1. A computer program product comprising one or more computer-readable memories storing computer-executable instructions which, when executed by one or more processors cause the one or more processors to perform a computer-implemented method that controls how a cluster system determines a particular server among a plurality of servers to which a job assignment associated with a computational job is to be given for execution, and wherein the computer-implemented method comprises acts of: maintaining at each server expected server performance information comprising expected performance parameters of tasks having varying characteristics if assigned to the server, wherein the expected server performance information is based on tracking expected performance parameters for different categories of tasks; maintaining cluster-level information that is not specific to any given server; for a given computational job to be executed at the cluster system, identifying a plurality of tasks associated with the computational job; for the given computational job, identifying task dependencies among the plurality of tasks; for the given computational job, determining which of the plurality of tasks is ready for execution based on the task dependencies; at a plurality of job schedulers, accessing cluster level information through an interface with a cluster management component, and accessing expected performance information regarding one or more server's capability to handle tasks for a particular category of tasks to which a task to be assigned belongs, the expected performance information being accessed by the plurality of job schedulers through either the interface with the cluster management component, or an interface with the plurality of servers; for each task that is ready for execution, at least one of the plurality of job schedulers selecting which server to assign a task to based on (i) expected server performance information accessed by the plurality of job schedulers, and (ii) cluster level information accessed by the plurality of job schedulers; and submitting a request to the selected server to perform one or more of the tasks that are ready for execution.