Patent ID: 8782240

Claim:
A method for allocating resources, comprising: defining a plurality of resource pools, wherein a first resource pool in the plurality of resource pools is a priority resource pool, wherein the priority resource pool has a first maximum pool size, wherein a second resource pool in the plurality of resource pools is a normal resource pool, wherein the normal resource pool has a second maximum pool size, and wherein the first maximum pool size is greater than the second maximum pool size; assigning an initial resource allocation from the plurality of resource pools to each of a plurality of servers; receiving a request for resources at a first server included in the plurality of servers; identifying a first one of the first or second resource pools associated with the request; in response to determining that the first server does not have resources currently allocated from the resource pool associated with the request available, perform at least one of: reallocating at least some of the requested resources from one of the first or second resource pools to the other of the first and second resource pools; and requesting at least some of the requested resources from a second server included in the plurality of servers; and in response to determining that the request cannot be satisfied from resources currently allocated to the first server: sending a first request for shared resources to a third server included in the plurality of servers; wherein the request for shared resources includes a maximum amount of priority resources that the first server could use, a maximum amount of normal resources that the first server could use, and a maximum amount of borrowed resources that the first server could use.