For best results, avoid over provisioning virtual machines
I see it all the time. When I walk into an environment, I see virtual machines with more vCPUs assigned than are really needed and more RAM assigned than is needed to support the intended workloads. The intentions of these—often rookie—administrators is genuinely positive. The thinking is simple: By providing a virtual machine with more resources than it really needs, it'll never run out of resources and will work even better. Although some workloads, such as Microsoft Exchange server, will grab every resource they can, other services use only what is needed at the present time.
Overprovisioning resources carries with it some risks and downsides that should be understood:
- Potential for high CPU Ready times. CPU Ready is the metric which tells administrators how long a virtual machine's virtual processors have to wait for associated physical processors before attempting to accomplish the necessary work. As more vCPUs are added to hosts that might already have high workloads, CPU ready time can increase, thus forcing the VM to wait for resource availability. The issue won't be reflected in the VM as high CPU utilization, though. In fact, the VM might even report very low CPU utilization. In short, the more physical resources upon which the VM is dependent, the more there is that can create availability issues. Although vSphere does a good job protecting administrators from themselves in overprovisioning other resources, this is one that can result in sometimes difficult to troubleshoot issues.
- Wasted disk space. Although thin provisioning can help protect administrators from wasting disk space due to overprovisioning, not all organizations use thin provisioning.
- Wasted RAM and additional cost. vSphere does a great job at memory management and its ballooning process can reclaim behind the scenes RAM that is not actually being used and use it in virtual machines where it is needed. However, with the introduction of VMware's vRAM entitlements, which came with vSphere 5, overprovisioning RAM to a virtual machine can now carry a real and direct cost as the RAM assigned to a virtual machine is now licensed.
In short, intentionally overprovisioning a virtual machine almost never works out to the positive and can actually make things worse.