Patent ID: 8108877

Claim:
A system for distributing a plurality of tasks over a plurality of nodes in a network, the system comprising: a plurality of processors for executing tasks; plurality of nodes comprising processors; a task dispatcher that: receives the plurality of tasks; calculates a task processor consumption value for the plurality of tasks; calculates a node processor consumption value for the plurality of nodes; calculates a target node processor consumption value for the plurality of nodes, the target node processor consumption value indicating optimal node processor consumption; calculates a load index value as a difference between the calculated node processor consumption value for a node i and the target node processor consumption value for node i; calculates a threshold value wherein the threshold value varies according to the processor workload, such that the threshold value represents a load index deviation reduction by a amount; and a task will be redistributed only if the redistribution reduces the load index deviation by more than the threshold value; and wherein the task dispatcher further comprises logic that: determines a processor type for each of the nodes if there is more than one processor type, wherein the processor type determines how the tasks are distributed; produces a multi-dimensional balancing matrix, each dimension of the matrix representing the node corresponding to a particular processor type and each cell representing tasks; sorts the calculated load index values in order from a highest load index value to a lowest load index value; populates the matrix with tasks according to the sorted load index values; re-distributes the tasks in the cells so as to balance the processor workload among the nodes; removes each dimension of the matrix if its corresponding node task list is empty; and distributes the tasks to the processors according to the balancing matrix representation; and the system further comprises: a balancer that: distributes the tasks among the nodes to balance a processor workload among the nodes, according to the calculated load index value of each node, such that the calculated load index value of each node is substantially zero; calculates a load index standard deviation value as a difference of the actual processor workload value to a target processor workload value where the load index value of all affinity nodes is substantially zero, such that the load index standard deviation is reduced to substantially zero; and informs a measuring mechanism to start monitoring tasks consuming a largest amount of processor resources for improved processor consumption details within each task if the balancer fails to bring the load index deviation value below the threshold value calculated by the task dispatcher; wherein the task dispatcher and the balancer are software residing in the system.