Patent ID: 7970905

Claim:
A method comprising the steps of: providing a system comprising distinct software modules, each of the distinct software modules being embodied on a tangible computer-readable recordable storage medium; obtaining a plurality of application profiles, for a plurality of applications, each of said profiles specifying a list of resources, and requirements for each of said resources, associated with a corresponding one of said applications, wherein obtaining a plurality of application profiles, for a plurality of applications is carried out by a distinct software module executing on a hardware processor; facilitating specification of a plurality of constraints associated with said applications, wherein facilitating specification of a plurality of constraints associated with said applications is carried out by a distinct software module executing on a hardware processor; facilitating obtaining a plurality of cost models associated with at least two different kinds of servers on which said applications are to run, wherein facilitating obtaining a plurality of cost models associated with at least two different kinds of servers on which said applications are to run is carried out by a distinct software module executing on a hardware processor; generating a recommended server configuration for running said applications, by formulating and solving a bin packing problem, wherein generating a recommended server configuration for running said applications is carried out by a distinct software module executing on a hardware processor, and wherein: each of said at least two different kinds of servers is treated as a bin of a different size, based on its capacity, and has an acquisition cost associated therewith, said size being substantially equal to a corresponding one of said resource requirement as given by a corresponding one of said application profiles; each of said applications is treated as an item, with an associated size, to be packed into said bins; and said bin packing problem develops said recommended server configuration based on reducing a total acquisition cost while satisfying said constraints and said sizes of said applications; repeating said generating step to generate at least a second recommended server configuration; estimating run-time cost for said first and second recommended server configurations; and determining for which of said first and second recommended server configurations a total cost, comprising said acquisition cost and said run-time cost, is lower.