Knowledge Base

Search the Knowledge Base: |
Search the Knowledge Base: |
ESX Server Reports Increased CPU Utilization for Idle Microsoft Windows Server 2003 SP1 SMP Virtual Machines
Details
I installed Microsoft Windows Server 2003 Service Pack 1 in an SMP virtual machine.
Why do the ESX Server Management Interface, VirtualCenter, and esxtop show an increase in CPU utilization by my idle virtual machine, compared to when SP1 is not installed?
Solution
When virtualizing a large number of Windows Server 2003 SP1 systems which will be running but primarily idle, you may need to account for this increased physical CPU utilization during server consolidation planning and sizing.
When an operating system is idle, it enters its idle loop. If the idle loop executes a halt instruction on the CPU, CPU resources are released. In the case of a physical machine, this release typically results in lower power consumption. In the case of a virtual machine, the release results in idle CPU resources which can then be retasked for use by other active virtual machines.
With Service Pack 1, Windows Server 2003 spins in the idle loop for a longer time before executing the halt instruction. When the system is virtualized, this results in increased physical CPU utilization even when there is no substantial activity in the guest operating system. The Microsoft Windows Task Manager Performance tab and Performance Monitor Processor\% Idle Time counters do not reflect this difference in idling behavior, as both portions of the idle loop are still accounted for as idle CPU cycles by the operating system.
ESX Server 2.5.1 includes a specialized virtual machine idle loop handler which is used if certain operational criteria are met. The handler controls the number of microseconds a Windows Server 2003 SMP virtual machine with a multiprocessor HAL can spin in its idle loop before the VMkernel preemptively halts the virtual machine, should thehalt instruction not be executed. The default value for this handler is 2000 microseconds.
monitor.idleLoopSpinUS = "n"
Values outside of this range are unlikely to result in resource utilization improvements. In comparison with the default value:
- A lower value means that the virtual machine is halted more quickly and uses fewer physical CPU cycles when idle.
- A higher value means that the virtual machine is allowed to spin longer before being halted.
The advantage of allowing the virtual machine to spin longer in the idle loop prior to being halted by the VMkernel is that the transition of a virtual machine to active state (executing code other than the idle loop) occurs far quicker from idle state than from halted state. As a result, lowering the value can reduce guest operating system performance and responsiveness in certain circumstances, such as with workloads that have time-sensitive, I/O-intensive, or interactive requirements, which cycle often between idle and active.
Note: Idle loop and resulting CPU halting behavior can vary significantly depending on the installed operating system or patch level. For a more generalized discussion of operating system idle loop behavior, please see knowledge base article 1077 at kb.vmware.com/kb/1077.
Keywords
Feedback
- KB Article: 1730
- Updated: Aug 14, 2009
- Products:
VMware ESX - Product Versions:
VMware ESX 2.5.x

