Configuring CPU Ready Alarms in vCenter

Last week, I had mentioned my disappointment that CPU Ready was not a default alarm in vCenter. The good news is that vCenter allows you to create such an alarm. Let’s talk about what sort of considerations should go into its creation.

Best Practices

So, what is a good threshold to use for CPU Ready? According to page 27 of VMware’s performance troubleshooting bible, you should be looking for any CPU Ready values “greater than 1000ms for any vCPU”. Keep in mind that if you were to check CPU Ready via a vCenter graph, this threshold would only be applicable for a real-time graph, which uses 20-second data points. If, for example, you were to use a past day graph, which uses 5-minute data points, this threshold would be much higher.

Additional Considerations

Take note that in the threshold above, it specifically mentions that this is measured on a per-vCPU basis. This detail is significant because CPU Ready alarms in vCenter can only be configured on a per-VM basis, thus the ideal threshold will differ depending on how many vCPUs have been allocated to a particular VM.

This quirk with CPU Ready alarms leaves us with a little bit of a dilemma: it’s not as simple as setting a single, blanket alarm across the entire infrastructure. If you’re someone with less than 30 VMs, you could probably take the time to create individualized alarms for each VM, based on their respective vCPU allocations. However, for many of us, we don’t have enough cycles to spend configuring a special alarm for each VM.

Here are a few ways you could approach CPU ready alarms without having to invest a ton of time:

  • Set CPU Ready alarms only for critical virtual machines that have CPU-intensive workloads or that would be most sensitive to CPU performance degradation.
  • Since CPU Ready is most likely to affect VMs with the largest CPU allocations first, use those as your “canary in a coal mine”.
  • Use a universal alarm, but set a low threshold between 1000ms and 2000ms. The only disadvantage with this method would be risking false positives for VMs that have 4+ vCPUs.

If none of these methods will work for you, another potential option would be to evaluate third-party solutions – such as vOPS – to see if you can get the monitoring you need.

Configuring a CPU Ready Alarm

Here’s an example of what a finished alarm would look like for a VM with 1 vCPU allocated:

Sharing is Caring

Hopefully, this has been helpful. If you have strategies for CPU Ready monitoring or alerting that haven’t been mentioned here, please comment below and share with the community.