Patent ID: 8752061

Claim:
A non-transitory data carrier carrying instructions for instructing a processor to: receive, from an application, a request for an amount of a resource; determine an expected state of the application on the basis of the request; identify a request control counter corresponding to the expected state of the application from a plurality of request control counters that corresponds to a plurality of application states, wherein a value of the identified request control counter represents the number of times requests that leads the application to transitioning to the expected state have been received but not granted; determine whether the value of the identified request control counter exceeds a maximum value; in response to determining the counter value has not exceeded the maximum value: determine for each resource provider in a set of resource providers a current load corresponding to a percentage of amount of resource currently utilized on the resource provider to the resource provider's total resource, a requested load corresponding to a percentage of the requested amount of the resource to the resource provider's total resource, and an additional load corresponding to a percentage of an additional amount of the resource to the resource provider's total resource, wherein the additional amount of the resource is expected to be required once the application has assumed the expected state; determine for each of the resource providers an expected total load based on a sum of the current load, the requested load, and the additional load; attempt to select from the set of resource providers, the resource provider with the smallest expected total load that is less or equal to 100% as a preferred resource provider; in response to not selecting a preferred resource provider, increment the value of the identified request control counter by 1; and in response to determining the counter value has exceeded the maximum value, reject the request for the amount of the resource.