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, by a computing device, 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, by said computing device, 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, by said computing device, 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, by said computing device, particular virtual machines to migrate from said overloaded physical server; and allocating, by said computing device, the selected virtual machines for migration to other active or re-activated physical servers; determining a Markov chain model, wherein said Markov chain comprises a plurality of states of said cloud data center, and wherein each of said plurality of states correspond to a range of utilization of said physical resources of said cloud data center; maximizing, by said computing device, a mean inter-migration time between virtual machine migrations under said quality of service requirement based on said Markov chain model, wherein said periodically reallocating resources is such that said mean inter-migration time between virtual machine migrations is maximized; and using, by said computing device for a non-stationary workload, a multisize sliding window workload estimation process to maximize said mean inter-migration time.