Knowledge Base

Search the Knowledge Base:

Products:
Search In:
 

High CPU Utilization of Inactive Virtual Machines

Details

Why is my server's CPU utilization high when my virtual machine is mostly inactive?

Solution

When a physical or virtual machine is idle, its operating system either issues a halt instruction or repeatedly executes an idle loop:

  • When an idle virtual machine executes a halt, it stops processing all instructions and requires no physical CPU on the server. This is the desired behavior in a virtual machine and causes no performance problems.
  • When an idle virtual machine executes its idle loop, it is actively executing instructions which run on the underlying physical processor. In this case, performance tools in the guest operating system show an inactive operating system, but the CPU on the server is fully utilized.

Idle loop behavior occurs most often when you try to add virtual processors to a virtual machine. This topic is covered in detail in the online ESX Server 2 Administration Guide. Before going any further, please read www.vmware.com/support/esx2/doc/esx20admin_smp_vm_vms.html#1050258 .

For a virtual machine running a Windows operating system, having the incorrect HAL (Hardware Abstraction Layer) installed makes the guest operating system always spin in its idle loop instead of halting. To resolve the issue, determine how the virtual machine was created:

  • Was this virtual machine created using ESX Server 2.x or Workstation 5.5?

    • If your virtual machine originates from ESX Server 2.x or Workstation 5.5, you may use this virtual machine in ESX Server 2.x or Workstation 5.5 without problems.
    • You may add processors to a virtual machine that was created under ESX Server 2.x or Workstation 5.5, but you may need to update the Windows HAL in your guest operating system. This is especially true if you are running a Windows 2000 guest operating system.
      To check which HAL you have installed in your virtual machine:
      1. Right-click the My Computer icon, and choose Properties.
      2. Click the Hardware tab.
      3. Click the Device Manager tab.
      4. Double-click the Computer icon to see which HAL is currently loaded.

      For more information on adding processors to your ESX Server 2.x virtual machine, see the section "Configuring a Virtual Machine to Use More than One Virtual Processor" in the ESX Server 2.x online manual: http://www.vmware.com/support/esx2/doc/esx20admin_smp_vm_vms.html#1050258 .

      For more information on adding processors to your Workstation 5.5 virtual machine, see the section "Using Two-Way Virtual Symmetric Multiprocessing (Experimental)" in the Workstation 5.5 online manual:
      www.vmware.com/support/ws55/doc/ws_devices_2way_vsmp.html
       
      Note:
      Even when the correct HAL is installed, some guest operating systems halt more aggressively than others. When the system is otherwise inactive, some guest operating systems may spin in their idle loop for some time before issuing a halt instruction, whereas others may halt immediately. Typically, operating systems that spin in idle loops before halting are running with multiple processors.

  • Was this virtual machine created using a different version of the VMware software?
    If your virtual machine was created in VMware Workstation 5.0 or earlier, VMware GSX Server, or in a previous version of ESX Server:
    • You may run this virtual machine in ESX Server 2.x or Workstation 5.5 without making any changes to the virtual machine. The virtual machine should run without problems.
    • You may upgrade the virtual hardware to ESX Server 2.0 standards, and the virtual machine runs without problems.
    • VMware does not support adding another processor to these virtual machines. The virtual machine must be created under ESX Server 2.x or Workstation 5.5 in order for you to add processors to it.

  • Was this virtual machine created using ESX Server or Workstation 5.5, then exported to run on GSX Server or VMware Workstation 5.0 or earlier?

    If the virtual machine was created using ESX Server or Workstation 5.5, it may have been created as a multiprocessor virtual machine. In a multiprocessor virtual machine, Windows installs a multiprocessor HAL. Running a guest operating system with this HAL in a uniprocessor virtual machine can cause undesirable idle loop behavior.
    If your virtual machine is configured with an SMP-compatible HAL (ACPI Multiprocessor) but it has only one virtual CPU, use the Device Manager and change to an SMP-upgradeable HAL (ACPI Uniprocessor). This reduces host CPU utilization while the migrated virtual machine is running.
    If a virtual machine is created as SMP and later changed to become UP, you can address the high CPU utilization by installing VMware Tools.

Note: Downgrading the HAL from multiprocessor to uniprocessor is not supported by the operating system vendor, Microsoft, and as such it is not supported by VMware.

Keywords

HAL; SMP; single; processor; multiprocessor; idle; ACPI; 1077; loop; ws400; ws500; ws550

Feedback

Rating: 1 - Lowest 2 3 4 5 - Highest (2 Ratings)   

Did this article help you?
This article resolved my issue.
This article did not resolve my issue.
This article helped but additional information was required to resolve my issue.
What can we do to improve this information? (2000 or fewer characters)
Submit
Rating: 1 - Lowest 2 3 4 5 - Highest (2 Ratings)   
Actions