Troubleshooting a virtual machine that has stopped responding: VMM and Guest CPU usage comparison (1017926)
Virtual machines depend on available host resources (CPU, Memory), and the Guest operating system consumes those resources. A problem with resource availability or scheduling inside or outside the virtual machine may cause it to become unresponsive.
This article provides steps for using CPU performance metrics to determine whether a Guest operating system is actually running, whether the virtual machine monitor (VMM) is running, or whether there is scheduling contention.
This article is part of a series. For more information, see the parent article Troubleshooting a virtual machine that has stopped responding (1007819).
Four virtual machine CPU performance metrics can be used together to gain insight into the responsiveness of a virtual machine or its Guest OS:
- Run - Amount of time the virtual machine is consuming CPU resources.
- Wait - Amount of time the virtual machine is waiting for a VMkernel resource.
- Ready - Amount of time the virtual machine was ready to run, waiting in a queue to be scheduled.
- Co-Stop - Amount of time a SMP virtual machine was ready to run, but incurred delay due to co-vCPU scheduling contention.
These performance metrics can be reviewed using the Performance tab in the vSphere Client or using the esxtop or resxtop command-line utilities. Chose the most appropriate method for your environment.
Reviewing performance metrics using the vSphere Client
For more information on using custom performance charts, see the Customizing Chart Views section of the Resource Management Guide or the View Advanced Performance Charts section of the vSphere Monitoring and Performance Guide.
- Connect to vCenter Server or an ESX/ESXi host using the vSphere Client.
- Select the target virtual machine in the inventory.
- Click the Performance tab.
- Click Chart Options to customize the performance chart.
- Under the CPU heading, select Real-time.
- Under the Chart Type heading, select Line Graph.
- Under the Objects list, select the virtual machine by name.
- Under the Counters list, select Co-stop, Run, Ready, and Wait.
- Optionally, save the chart settings to make re-use easier.
- Click OK.
- Make note of the four metrics displayed. Each is measured in milliseconds.
Reviewing performance metrics using esxtop or resxtop
For more information on using
resxtop, see the Performance Monitoring Utilities: resxtop and esxtop section of the vSphere Monitoring and Performance Guide or Resource Management Guide.
- Identify the host on which the unresponsive virtual machine is running:
- Open the VMware vSphere Client and connect to your VMware vCenter Server or VirtualCenter server.
- Select the virtual machine that is not responding.
- Click the Summary tab, and identify the Host: value, indicating the host that has the running virtual machine registered to it.
- Open a console session to the ESX/ESXi host where the virtual machine is running, or to the vMA, or to another location where the VMware Command-Line Interface (vCLI) is installed:
- For VMware ESX, log in to the service console using SSH or directly at its terminal. For more information, see Unable to connect to an ESX host using Secure Shell (SSH) (1003807).
- For VMware ESXi 4.0 and 3.5, use Technical Support Mode. For more information, see Tech Support Mode for Emergency Support (1003677).
- For VMware ESXi 4.1, use Technical Support Mode. For more information, see Using Tech Support Mode in ESXi 4.1 (1017910).
- Start the esxtop or resxtop command:
resxtop --server HostNameOrIPAddress [--username root]
- Press c on your keyboard to display the CPU panel.
- Press V (uppercase) on your keyboard to display only virtual machines.
- Identify the virtual machine by its Name or World ID.
- Press f on your keyboard to change the visible fields. Ensure the CPU State Times are visible:
ID GID NAME NWLD %USED %RUN %SYS %WAIT %RDY %IDLE %OVRLP %CSTP %MLMTD %SWPWT
186 186 VMName 4 2.11 2.08 0.00 397.64 0.25 197.71 0.20 0.00 0.00 0.00
Note: The esxtop fields in ESXi 5.0 include an additional field called %VMWAIT in the CPU view. %VMWAIT represents the total percentage of time the World spent in a blocked state waiting for events.
- Make note of the four metrics displayed. Each is measured as a percentage of time:
Interpreting CPU performance metrics
This value represents the percentage of absolute time the virtual machine was running on the system.
If the virtual machine is unresponsive,
%RUNmay indicate that the guest operating system is busy conducting an operation.
%RUNis near zero and the virtual machine is unresponsive, it could mean that the virtual machine is idle, blocked on an operation, or is not scheduled due to resource contention. Look at other values (
%CSTP) to identify resource contention.
%RUNis near the value of the number of
vCPUS x 100%, it means that all vCPUs in the virtual machine are busy. This is an indicator that the guest operating system may be stuck in a operational loop. To investigate this issue further, you may need to engage the appropriate operating system vendor for assistance in identifying why the guest operating system is using all of the CPU resources.
If you have engaged the guest operating system vendor, and they have determined that the issue is caused by the VMware tools or the virtual machine hardware, it may be pertinent to suspend the virtual machine to collect additional diagnostic information.
This value represents the percentage of time the virtual machine was waiting for some VMkernel activity to complete (such as I/O) before it can continue.
If the virtual machine is unresponsive and the
%WAITvalue is proportionally higher than
%CSTP, then it could indicate that the world is waiting for a VMkernel operation to complete.
You may observe that the
%SYSis proportionally higher than
%SYSrepresents the percentage of time spent by system services on behalf of the virtual machine.
%WAITvalue can be a result of a poorly performing storage device where the virtual machine is residing. If you are experiencing storage latency and timeouts, it may trigger these types of symptoms across multiple virtual machines residing in the same LUN, volume, or array depending on the scale of the storage performance issue.
%WAITvalue can also be triggered by latency to any device in the virtual machine configuration. This can include but is not limited to serial pass-through devices, parallel pass-through parallel , and USB devices. If the device suddenly stops functioning or responding, it could result in these symptoms. A common cause for a high
%WAITvalue is ISO files that have been left mounted in the virtual machine accidentally that have been deleted or moved to an alternate location. For more information, see Deleting a datastore from the Datastore inventory results in the error: device or resource busy (1015791).
If there does not appear to be any backing storage or networking infrastructure issue, it may be pertinent to crash the virtual machine to collect additional diagnostic information.
This value represents the percentage of time that the virtual machine is ready to execute commands, but has not yet been scheduled for CPU time due to contention with other virtual machines.
- Compare against the
Max-Limited, %MLMTDvalue. This represents the amount of time that the virtual machine was ready to execute, but has not been scheduled for CPU time because the VMkernel deliberately constrained it. For more information, see the Managing Resource Pools section of the vSphere Monitoring and Performance Guide or Resource Management Guide.
If the virtual machine is unresponsive or very slow and
%MLMTDis low it may indicate that the ESX host has limited CPU time to schedule for this virtual machine.
This value represents the percentage of time that the virtual machine is ready to execute commands but that it is waiting for the availability of multiple CPUs as the virtual machine is configured to use multiple vCPUs.
If the virtual machine is unresponsive and
%CTSPis proportionally high compared to
%RUN, it may indicate that the ESX host has limited CPU resources simultaneously co-schedule all vCPUs in this virtual machine.
Review the usage of virtual machines running with multiple vCPUs on this host. For example, a virtual machine with four vCPUs may need to schedule 4 pCPUs to do an operation. If there are multiple virtual machines configured in this way, it may lead to CPU contention and resource starvation.
When using performance metrics to troubleshoot any issue, capture samples to a persistent location so they can be referred to later. For more information, see Using performance collection tools to gather data for fault analysis (1006797).
Depending on the nature of the performance metrics determined, it may be pertinent to either crash or suspend the virtual machine to collect additional troubleshooting information, or to investigate a resource constraint or other performance issue. For further information, see the Action Plan section of Troubleshooting a virtual machine that has stopped responding (1007819).
- If %WAIT is relatively high and the virtual machine is unresponsive, but there are no backing storage or networking infrastructure problems, this indicates that the virtual machine may be blocked on some stuck operation. For more information, see Crashing a virtual machine on ESX/ESXi to collect diagnostic information (2005715).
- If %RUN is relatively high and the virtual machine is unresponsive, this indicates that the Guest OS or virtual machine monitor is running very hot, possible indicating a runaway process. For more information, see Suspending a virtual machine on ESX/ESXi to collect diagnostic information (2005831).
- Otherwise, review Hyperthreaded Core Sharing Modes from the vSphere Resource Management Guide and the Performance Tuning Best Practices document to adjust your virtual machine distribution based on CPU contention, and review Impact of virtual machine memory and CPU resource limits (1033115).
- Using performance collection tools to gather data for fault analysis
- Troubleshooting a virtual machine that has stopped responding
- Impact of virtual machine memory and CPU resource limits
- Troubleshooting ESX/ESXi virtual machine performance issues
- Crashing a virtual machine on ESX/ESXi to collect diagnostic information
- Suspending a virtual machine on ESX/ESXi to collect diagnostic information