Patent ID: 7594228

Claim:
A method to assign tasks, comprising: receiving a request to execute a task on one of a plurality of processors; determining a task type for said task; retrieving a processor task value of said task type for each processor, said processor task value representing a number of other task types affected by assigning said task to a processor; selecting a processor from said plurality of processors based on said processor task values; and assigning said task to said selected processor; and updating said processor task values for each task type and each processor, wherein said updating comprises: retrieving a first resource cost value for a first task type; retrieving a second resource cost value for a second task type; generating a modulo of said first resource cost value divided by said second resource cost value to form a first relative resource value for said first task type relative to said second task type; determining a remaining resource value for said processor; generating a modulo of said remaining resource value divided by said second resource cost value to form a second spare resource value for said second task type; comparing said first relative resource value to said second spare resource value; and updating said processor task value for said first task type in accordance with said comparison.