Resource pools are used to hierarchically partition available CPU and memory resources, and are available for use at the VMware host cluster layer.

To better prioritize certain VMs over others, especially in a highly concurrent VM farm, I recommend leveraging three resource pools for SQL Server-on-VMware environments. Tier-1 can be created with a high value of resources assigned for CPU and memory; Tier-2 is normal; Tier-3 is low. Do not manually specify the amount of shares for each, as this metric will become skewed if compute hardware is added or removed from the host cluster.

A three-tier resource pool topology allows for simple prioritization of critical VMs when resource contention exists, all without artificially slowing down the VMs when no resource contention exists. VMs placed in the Tier-1 resource pool receive top priority to the host compute resources. Tier-2 takes priority over Tier-3, but must wait for Tier-1 VMs. Tier-3 must wait on the others, but only if resource scheduling pressure exists. Simply drag and drop the VMs into the appropriate resource pool to assign them appropriately.

VMware DRS must be enabled to be able to use resource pools.

Resource pools should never be used as folders. If resource pools are treated as nested folders for multiple applications or other purposes, the act of having the hypervisor attempt to determine the resource shared for a given VM can cause significant amounts of performance overhead, to the point of almost crippling a VM through inherent Co-Stop metrics. Use resource pools sparingly and only where appropriate.