1. A method of improving a utilization of physical resources and reducing energy consumption in a cloud data center, said method comprising: providing a plurality of virtual machines in said cloud data center; periodically reallocating resources of said plurality of virtual machines according to a current resource demand of said plurality of virtual machines in order to minimize a number of active physical servers required to handle a workload of the physical servers, wherein said reallocating comprises: determining when a physical server is considered to be overloaded so that some of the virtual machines are migrated from the overloaded physical server to other physical servers in order to meet a quality of service requirement; determining when a physical server is considered to be underloaded so that the virtual machines of said physical server are migrated to other physical servers, wherein said physical server is switched to a lower power mode; selecting particular virtual machines to migrate from said overloaded physical server; and allocating the selected virtual machines for migration to other active or re-activated physical servers; maximizing a mean inter-migration time between virtual machine migrations under said quality of service requirement based on a Markov chain model; and using a multisize sliding window workload estimation process for a non-stationary workload to maximize said mean inter-migration time.