Patent ID: 7530068

Claim:
A method for managing system resources, comprising: assigning each requestor in a plurality of requestors to an associated resource allocation group in a plurality of resource allocation groups based on resource usage characteristics of each requestor, wherein each resource allocation group in the plurality of resource allocation groups comprises two or more requestors; setting a rate counter for each resource allocation group based on the resource usage characteristics of the requestors within each resource allocation group, thereby forming a set of rate counters, wherein each rate counter in the set of rate counters tracks a rate that is a percentage of bandwidth for a managed resource that can be used by the requestors in each resource allocation group; generating for each resource allocation group a plurality of tokens for the managed resource based on the rate counter, wherein a sum of all rates for the set of rate counters for the plurality of resource allocation groups does not exceed the capabilities of the managed resource; receiving a first request for a first token from a requestor in a first resource allocation group of the plurality of resource allocation groups; responsive to receiving the first request, determining whether one of the plurality of tokens generated for the first resource allocation group for the managed resource is available to fill the request; responsive to one of the plurality of tokens generated for the first allocation group for the managed resource being available, issuing the token generated for the first allocation group for the managed resource to the requestor receiving a second request for a second token from the requestor in the first resource allocation group; responsive to receiving the second request, determining whether another one of the plurality of tokens generated for the first resource allocation group for the managed resource is available to fill the request; responsive to another one of the plurality of tokens generated for the first allocation group for the managed resource failing to be available, determining whether one of the plurality of tokens generated for a second resource allocation group of the plurality of resource allocation groups for the managed resource is available to fill the request; and responsive to one of the plurality of tokens generated for the second allocation group for the managed resource being available, issuing the token generated for the second allocation group for the managed resource to the requestor.