Patent ID: 7496564

Claim:
A method for use in a computing utility, wherein the computing utility comprises a plurality of application service provider systems and a utility controller, and an application service provider system comprising an application controller, the method comprising the steps of: obtaining a request of an application to one of the plurality of application service provider systems; and in response to the application: (i) an application controller of the application service provider system to which the application request is directed computing a value of a first metric associated with a resource action, wherein the application controller comprises an application controller metric function and application controller logic, wherein the application controller metric function computes the value of the first metric and the application controller logic searches a set of possible resource actions to determine an optimal resource action based on the first metric value computed by the application controller metric function; and (ii) the utility controller computing a value of a second metric associated with a resource action, wherein the utility controller comprises a utility controller metric function and utility controller logic, wherein the utility controller metric function computes the value of the second metric and the utility controller logic searches a set of possible resource actions to determine an optimal resource action based on the second metric value computed by the utility controller metric function; wherein the resource action is at least one of a request, a release, an allocation, and a reclaiming of computing services; computing by the application controller, a value of a first metric that comprises computing a total cost from an aggregate service level agreement cost and an aggregate resource cost; computing by the utility controller, a value of a second metric that comprises computing an aggregated resource cost from different resources; notifying the application controller that previously allocated resources must be returned; and notifying the utility controller that resources are returned.