When monitoring virtual machine performance, a significant discrepancy may be observed between the hypervisor metrics and the internal guest operating system (OS) metrics.
VMware vSphere ESXi 8.x
VMware vCenter Server 8.x
This discrepancy occurs when the virtual machine's advanced configuration parameter monitor_control.halt_desched is manually set to FALSE as part of a performance tuning implementation.
Setting this parameter to "FALSE" overrides the default CPU scheduling behavior. It forces the vCPU to consume all of its allocated pCPU time. When the vCPU in the VM idles, the VM Monitor spins on the CPU without yielding the CPU to the VMkernel scheduler until the vCPU needs to run in the VM again. Because the VM Monitor continuously spins on the physical CPU during idle periods instead of yielding, the hypervisor registers this activity as constant, high CPU utilization.
To resolve the reporting discrepancy and restore the default hypervisor scheduling behavior, revert or remove the advanced configuration parameter by following these steps:
Power off the affected virtual machine.
Right-click the virtual machine and select Edit Settings.
Navigate to VM Options > Advanced and click Edit Configuration.
Locate the row for the monitor_control.halt_desched parameter.
Change the value to TRUE, or remove the parameter entirely to return to default behavior.
Click OK to save the changes and power on the virtual machine.
Monitor the performance charts to confirm the hypervisor CPU usage now aligns with the Guest OS processing load.
Removing or altering the parameter to TRUE re-enables the default hypervisor behavior, allowing the Virtual Machine Monitor to yield physical CPU cycles back to the VMkernel scheduler when the Guest OS issues a halt/idle instruction. This resolves the continuous spinning state and normalizes metrics. Ensure to consult official performance tuning documentation before modifying advanced VM parameters.
For information on CPU usage, please refer the Broadcom TechDoc : CPU Usage