Windows Virtual Machines with Latency-Sensitive I/O Workloads Can Slow Down in Four-Way SMP Configurations
search cancel

Windows Virtual Machines with Latency-Sensitive I/O Workloads Can Slow Down in Four-Way SMP Configurations

book

Article ID: 326191

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Under certain conditions, four-way Windows virtual machines, and to a lesser extent, two-way Windows virtual machines may slow down compared to the same workload run in a uniprocessor virtual machine. The virtual machine also exhibits an increased amount of idle time. This can happen in cases where there is not sufficient work to keep the processors busy and when the workload has a low rate of external interrupts.
 
ESX Server 3.0.x includes a specialized virtual machine idle loop handler, which controls the number of microseconds a Windows SMP virtual machine spins in its idle loop before ESX Server halts the virtual machine. For ESX Server 3.0.x, the default value is 100. For some workloads, the delay caused by halting and then resuming the VCPUs causes a measurable slowdown as the number of VCPUs is increased.


Environment

VMware ESX Server 3.0.x

Resolution

Try setting the virtual machine configuration option monitor.idleLoopSpinUS = <n> to increase the amount of time spent spinning in the idle loop (values greater than 100 and less than 4000 are recommended, for example 1000 or 2000). For example:
  1. Schedule some down time.
  2. Power off the virtual machine.
  3. Add
    monitor.idleLoopSpinUS = 1000
    to the configuration file of the virtual machine (.vmx extension).
    Note: For instructions on how to edit the .vmx file, see Tips for editing a .vmx file
  4. Power on the virtual machine.
You can set monitor.idleLoopSpinUS = -1 to turn off the idle loop handler and allow the virtual machine to spin in its idle loop as determined by the guest operating system. However, VMware doesn't recommend using monitor.idleLoopSpinUS = -1 unless necessary, because it can cause the guest operating system to spin unnecessarily in its idle loop, resulting in unnecessary host CPU utilization possibly diverting CPU resources from other virtual machines. You can also use a one-way or two-way virtual machine.