As previously mentioned, VMWare’s virtualization technology allocates physical hardware resources (processor, CPU, etc) to virtual guests running on a VMWare host server. The most common version of VMWare in production today is their ESX Server platform. It not only allocates the resources, but dynamically controls the amount of resources each virtual guest receives based upon the on-demand need of each guest system.
Virtual Machine Ready Time
There are a number of challenges that accompany a virtualized server infrastructure. To achieve optimum performance in a consolidated virtual environment, one must consider what is known as ‘ready time’, which is defined as the time a virtual machine must wait in a ready-to-run state before it can be scheduled to have resources allocated to it on one or more of the host server’s physical CPUs.
Access to the physical CPU is handled by the ESX Server scheduler. As the number of virtual machines increase, and/or the CPU utilization ramps up, the scheduler is more likely to force a virtual machine to wait for CPU resources. Even virtual machines that are basically running in an idle state need small amounts of CPU time to conduct various maintenance tasks.
Resource scheduling in a virtual environment is more complex than it is in the physical world. This is because there are two layers of scheduling rather than just one. In the physical world, the operating system directly allocates CPU resources to applications. In a virtual environment, the ESX server scheduler allocates a ‘chunk’ of CPU time to the virtual operating systems, and those operating systems allocate what are now virtual CPU resources to the applications running on that virtual machine.
There are a number of factors that affect a virtual machine’s ready time, including:
- Overall CPU utilization - obviously, if the CPUs of the host server are already heavily taxed, ready times will be high
- Number of virtual machines running on the host server
- Load correlation – If one process requiring CPU time ends and triggers only one new process, ready times will remain low. However, if that original process spawns a number of simultaneous tasks, the likelihood that you will see higher ready times will increase.
- Number of virtual CPUs configured for a virtual machine – If a virtual machine is configured to use two CPUs rather than just one, both physical CPUs must be available at the same time if a multithreaded task needs to be scheduled.
The multiprocessor aspect adds yet an additional factor to the scheduling scenario – virtual machines that have been scheduled to run on a particular CPU will be given priority to run on that CPU again the next time CPU time is required, which could basically be considered “cutting in line” so to speak, ahead of other requests already in the queue.

