Patent ID: 8261266

Claim:
A method for automatically learning an improved hardware profile for an application, the method comprising: collecting, by a first processing device of one or more processing devices of an operating environment, performance statistics of the application executing in a plurality of hardware configurations; automatically profiling the application, by the first processing device or a second processing device of the one or more processing devices of the operating environment, based on the collected performance statistics to derive an improved hardware profile with respect to the application; scheduling, by the first processing device, the second processing device or a third processing device of the one or more processing devices of the operating environment, deployment of a virtual machine on a first other processing device of a plurality of other processing devices, the virtual machine having a virtual hardware configuration matching the derived improved hardware profile; deploying the virtual machine, on the first other processing device, for executing the application; monitoring, by one of the first processing device, the second processing device, the third processing device or a fourth processing device of the one or more processing devices of the operating environment, performance statistics of the application executing on the first other processing device; calculating, by one of the first processing device, the second processing device, the third processing device, the fourth processing device or a fifth processing device of the one or more processing devices of the operating environment, processor utilization, amount of memory allocated, number of inputs/outputs per fixed unit of time with respect to a medium, storage space used or available with respect to the medium, and network utilization, with respect to the application executing on the deployed virtual machine; and deriving, by one of the first processing device, the second processing device, the third processing device, the fourth processing device, the fifth processing device or a sixth processing device of the one or more processing devices of the operating environment, an updated improved hardware profile based on the monitoring, the deriving of the updated improved hardware profile being based, at least in part, on the processor utilization, the amount of memory allocated, the number of inputs/outputs per fixed unit of time with respect to a medium, the storage space used or available with respect to the medium, and the network utilization.