SQL Sentry Custom Conditions for VMware
This post has been updated to include a link to our Strategies and Best Practices for Virtualizing SQL Server guide.
In the latest Custom Conditions Pack, there were four new Custom Conditions for VMware-specific scenarios. These conditions can assist you in staying on top of performance in your VMware virtual environments. You've probably heard of "right-sizing your VMs" and that's part of the guidance these Custom Conditions are providing.
When the host reclaims the extra memory you didn't appear to be using. (photo credit: https://flic.kr/p/5xzCCP)
When a virtual machine exhibits significant ballooning, then it's likely the host does not have enough memory to go around. This could be due to a temporary workload situation, but it might be an ongoing problem. There are many ways to resolve this issue. The simplest solution might be to add physical memory to the host. You could potentially migrate one or more of the guest machines to another host. Another option may be to lower the memory on one guest to allow more memory for another.
If your environment has high ballooning, you'll want to ensure that there's enough memory to prevent performance degradation. The VMware High Ballooning Custom Condition in SQL Sentry helps you know when high ballooning is happening so you may investigate further and take the appropriate action for your environment.
When you have all of that vCPU and try to schedule time with all of them. (photo credit: https://flic.kr/p/89zmUD)
You know the saying, "too much of a good thing can be a bad thing"? Well, CPU is one of those good things that can be bad in excess. This co-stop % indicates that a virtual machine is ready to run, but unable to run due to co-scheduling constraints. Providing a virtual machine with more vCPUs than it actually needs can severely decrease performance through scheduling overhead to access the physical CPUs. Having appropriate vCPU power for the workload requirements can help this run more efficiently. The VMware High Co-Stop % condition will find those VMware environments with a high co-stop % and assist in identifying virtual machines that are potentially not "right-sized" for their workloads.
When your virtual machines vary greatly in size (vCPUs). (photo credit: Actually, this one is my photo)
There are two Custom Conditions for VMware High Ready Time % per vCPU, one is a warning and the other is for when it is considered to be critically high. When a vCPU is ready to do work, but is waiting for the hypervisor to schedule that work on one or more physical CPUs, the vCPU accumulates Ready Time. I can't help but think of it as being similar to a SQL Server Wait Type.
A common cause of this is a high ratio of vCPUs to physical CPUs on the host machine. Too many vCPUs subscribed to the physical CPUs can cause an over-subscription situation. Having VMs of significantly different sizes (by vCPU count) on the same host can also be a cause. For example, a host with mostly small VMs (1-2 vCPUs) might have performance issues also hosting a machine with 16 vCPUs. Try to keep the guest machines similarly sized by host when designing your environments. You may need to migrate or resize guest machines if High Ready Time % per vCPU becomes an issue.
"Right-sizing" your virtual machines is an important step in squeezing out the best performance from your VMware environments. These SQL Sentry Custom Conditions for VMware assist you in discovering machines that might require some additional tweaking to achieve that best-matched size.