Hyper-V: Performance decrease in VMs on Intel Xeon 5500 (Nehalem) systems

Article ID: 2000977 - View products that this article applies to.
Expand all | Collapse all

Symptoms

You have a computer that is running Windows Server 2008 Hyper-V Service Pack 1 (SP1) or Windows Server 2008 Hyper-V Service Pack 2 (SP2) on a system that is equipped with Intel Xeon 5500 series processors (Nehalem). However, you may notice decreased performance in guest virtual machines (VMs) that are running on this computer.  For example, you may notice that the system clock in the VM is running slowly even though the system clock in the host runs correctly. Or, you may notice that the VM may perform slowly when you perform certain operations, such as opening a CMD window, starting or stopping services, or similar operations.

Cause

This issue occurs because of an error in the firmware implementation of the ACPI C-states (processor idle states).  This firmware incorrectly maps the "core C3" processor state into the ACPI C2 state.  Therefore, when the system enters C2, the platform goes to C3. This behavior causes the local APIC timer (LAPIC timer) of the processor to stop counting and to stop delivering interrupts.  However, the Hyper-V hypervisor uses the LAPIC timer as the hypervisor’s internal time source.  This behavior causes the problem that is described in the “Symptoms” section.

Notes

  • A natively-running Windows operating system does not use the LAPIC timer for the internal time source.  Therefore, if you run Windows Server 2008 without the Hyper-V role enabled, you will not experience this problem.
  • The Nehalem platform introduced deep C-states to server processor SKUs.

Resolution

Customers who are affected by this issue should contact their system vendor to request an updated BIOS that correctly maps the C-states.

Workaround

Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:


322756.KB.[LN] How to back up and restore the registry in Windows

To temporarily work around this problem, disable the ACPI C-states in the BIOS.

Note The firmware may not provide this option. If the firmware does not allow for this option, you can still disable the use of the C2 state. To do this, change the Windows Registry to disable the C2 state through the Windows processor driver as follows:

reg add HKLM\System\CurrentControlSet\Control\Processor /v Capabilities /t REG_DWORD /d 0x0007e666

Note By default, the C3 state is disabled on Windows Server 2008 Service Pack 1 (SP1) or Service Pack 2 (SP2) with the Hyper-V. When you add this registry entry, all  C-states are disabled except for the C1 C-state.

Properties

Article ID: 2000977 - Last Review: November 22, 2010 - Revision: 5.0
APPLIES TO
  • Microsoft Hyper-V Server 2008
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
Keywords: 
kbhyperv KB2000977

Give Feedback

 

Article Translations