Patent ID: 7783759

Claim:
A method for optimizing server farm resource usage among a plurality of contract customers comprising steps performed by a processor of: providing a long term forecast of server resource workload for each contract customer having a contract for on-going usage of server resources at a server farm based on previously monitored workload conditions; building a resource allocation plan for allocation of server resources to customers for a plurality of time slots based on the long term forecast and customer contract information; controlling the allocation of server resources in accordance with the resource allocation plan; monitoring the current workload conditions of server resources during operation of the server farm; providing a short term forecast based on currently monitored workload conditions at said server resources; evaluating refinement of the resource allocation plan should said short term forecast differ from said long term forecast; refining the resource allocation plan to generate a current resource allocation plan when the short term forecast differs from said long term forecast by more than a predetermined threshold; and adjusting the allocation of server resources in accordance with the current resource allocation plan, wherein said providing a long term forecast comprises the steps of: constructing an expected revenue function (ERF) for every customer; and constructing a time slot allocation of resources for each of a plurality of time slots using the ERF for every customer and wherein said constructing an ERF, whereby ERF i,t [j] is a weight that corresponds to an expected revenue from allocating a jth server to customer i at time slot t, comprises the steps of: providing input of MLISLA i comprising the contract of customer i, a FORECAST i,t comprising a forecasted probability distribution of load Mt i for customer i at time slot t whereby FORECAST i,t (x) is a probability that a load Mt will be at least x, REVENUE[j] comprises a charge or rate for a jth server if needed, PENALTY[j] comprises a penalty for a jth server if required and not allocated, Pr[j needed] is a probability that a jth server is needed for the customer at time t, and Pr[j required] comprises a probability that a jth server is required for the customer at time slot t; and determining the following: for j =1, . . . , n: Let M needed min be the minimum load Mt s.t. MAP(Mt)=(x,y) and y≧j Pr[j needed]=Pr[M≧M needed min ]=FORECAST i,t (M needed min ) Let be the minimum load Mt s.t. MAP(Mt)=(x,y) and xj Pr[j required]=Pr[Mt≧M needed min ]=FORECAST i,t (M needed min ) ERF i,t[j] =Pr[j needed*REVENUE[j]+Pr[j required]*GUARANTEE[j]*PENALTY[j].