Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

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


Symptoms

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

↑ Back to the top


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.

↑ Back to the top


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.

Windows Server 2008:

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.

Windows Server 2008 R2 or later:

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

↑ Back to the top


Keywords: kbhyperv, vkball, kb

↑ Back to the top

Article Info
Article ID : 2000977
Revision : 1
Created on : 1/8/2017
Published on : 12/2/2014
Exists online : False
Views : 106