Patent ID: 8230438

Claim:
A method for on-demand application resource allocation under one or more load-dependent resource constraints and one or more load-independent resource constraints comprising the steps of: ordering servers by decreasing value of their densities defined as available service capacity divided by memory capacity for each server; ordering applications by decreasing densities defined as number of requests in a given time interval divided by memory requirements for each application; initially loading a highest density application to a highest density server which has enough memory for that application and loading other applications on servers according said steps of ordering; and dynamically reconfiguring placement of applications on servers according to an objective function which satisfy all applications demand while respecting memory and processing constraints of every server and wherein the objective function comprises a total number of applications assignment changes from a previous time interval to a current time interval, wherein the step of initially loading comprises the steps of: for each application assigned to a server, determining if the application completely fits the server; if the application completely fits the server, deleting the application from a sorted list of the ordered applications, updating service and memory capacities of the server and recomputing new density of the server based on the updated service and memory capacities and insert the server into the list of servers according to the new density of the server; otherwise, if the application does not completely fit the server, deleting the server from a sorted list of the ordered servers, assigning part of a demand for the application to the deleted server, computing a new application density with remaining demand, and re-inserting the application into the list of ordered applications according to the new density of the application; and returning to the ordering steps until the sorted list of ordered applications is empty.