You see "Host CPU usage" alarms in vCenter on ESXi hosts running VDI workloads, particularly during peak user activity.
Additional symptoms reported:
ESXi hosts allocate physical CPU cycles to virtual machines on demand. Under normal conditions, not all VMs need CPU resources simultaneously, so hosts can support more vCPUs than physical CPUs—this is expected behavior called overprovisioning or overcommitment.
VDI environments typically tolerate higher overprovisioning ratios than traditional server workloads because:
However, there is still a limit. When the total vCPUs allocated to powered-on VMs greatly exceeds the host's physical CPU capacity, VMs must wait in a queue for available CPU cycles. This waiting time is measured as "CPU Ready" in esxtop. As overprovisioning increases, CPU Ready times rise and VM performance degrades.
VDI environments can also be particularly susceptible to hitting this limit because:
Field experience and internal testing suggest that hosts become unstable when vCPU overprovisioning approaches 1000% of physical capacity. As a rule of thumb, environments operating at 400% or higher are at increased risk of performance degradation and potential instability under load.
Step 1: Calculate your host-level vCPU overprovisioning ratio
You can determine your overprovisioning ratio using either method:
Manual calculation in vSphere Client:
(Total vCPUs ÷ pCPUs) × 100 = Overprovisioning %Using PowerCLI or RVTools:
Get-VM and Get-VMHost to extract vCPU and pCPU counts programmatically.Adjust for Hyper-Threading if enabled:
If Hyper-Threading (HT) is enabled, apply a 25% capacity adjustment rather than counting each logical processor as a full CPU. Hyper-Threading allows two threads to share a single physical core, but they compete for the same execution resources (ALUs, cache, branch predictors). The second thread does not provide a full core's worth of processing—benchmarks typically show 20-30% improvement, not 100%.
To calculate HT-adjusted effective cores: Effective Cores = Physical Cores × 1.25
For example, a host with 24 physical cores and HT enabled has 48 logical processors, but effective capacity is closer to 30 cores (24 × 1.25).
Then calculate: (Total vCPUs ÷ Effective Cores) × 100 = HT-Adjusted Overprovisioning %
Interpreting results:
Step 2: Collect esxtop batch data during high activity
Capture CPU metrics during a period of high VDI user activity (login storms, peak usage hours).
esxtop -b -d 5 -n 240 > /tmp/esxtop_output.csv
/tmp/esxtop_output.csv.Step 3: Analyze CPU Ready and Co-Stop metrics
Review the esxtop batch output for these key indicators:
Interpretation:
| CPU Ready | Co-Stop | Indicates |
|---|---|---|
| High (>5%) | Low (<3%) | Host-level vCPU overprovisioning |
| High (>5%) | High (>3%) | Individual VMs may be oversized |
| Low (<5%) | Low (<3%) | No significant CPU contention |
Step 4: Generate ESXi host log bundle
Immediately after capturing esxtop data, generate a log bundle from the affected host to correlate logs with the captured metrics.
Follow Collecting diagnostic information for VMware products
Step 5: For expert analysis, open a support case
If you require assistance interpreting results, open a support case with Broadcom for VM management.
Include the following:
Option A: Right-size virtual machines
Reduce vCPU counts on VMs that are allocated more than they require.
Option B: Distribute workload across hosts
Migrate VMs to other hosts in the cluster to reduce per-host overprovisioning ratios.
Option C: Add physical CPU capacity
If right-sizing and redistribution are insufficient, add physical resources.