Patent ID: 7739388

Claim:
A method comprising: defining, in a data center, a plurality of server groups each allocated to process a respective different one of a plurality of application workloads, wherein each of the plurality of server groups includes: one or more active server computers that process the application workload characterizing the server group; and an inactive server pool containing zero or more currently inactive server computers that, while inactive, do not process the application workload characterizing the server group; defining in the data center an unallocated server pool containing only unallocated server computers not currently allocated to any of the plurality of server groups; measuring performance characteristics of the plurality of application workloads running on the plurality of server groups of the data center, wherein said performance characteristics include power consumption and transaction processing time, wherein said measuring performance characteristics further comprises periodically measuring performance characteristics utilizing synthetic rather than actual workload transactions; in response to said performance characteristics being above a first pre-defined target range, decreasing a clock rate of an active server computer in said data center; in response to said performance characteristics being below said first pre-defined target range, increasing said clock rate of said active server computer in the data center; in response to said performance characteristics being within said first pre-defined target range and said clock rate being below a second pre-defined target range, deactivating an active server computer within one of the plurality of server groups and placing the deactivated server in the inactive server pool of that one of the plurality of server groups; in response to said performance characteristics being within said first pre-defined target range and said clock rate being above the second pre-defined target range, activating an inactive server computer within one of said inactive server pools and removing the activated server computer from that one of the inactive server pools; in response to a size of one of the inactive server pools being above a third pre-defined target range, deallocating an inactive server computer from one of the inactive server pools and placing the deallocated server computer in the unallocated server pool; and in response to said size of one of the inactive server pools being below said third pre-defined target range, allocating an additional server computer from said unallocated server pool to the one of the inactive server pools and removing the allocated server computer from the unallocated server pool.