Configuring Priority Shares for Resource Pools

In cases of resource contention, data center hosts need a way to arbitrate between competing virtual machines. You can configure the shares settings of a virtual machine to set its priority relative to its siblings. You can configure the shares settings of a resource pool to affect the priorities of all virtual machines within the resource pool, as a group.

The following illustration shows a standalone host that has several virtual machines. The marketing department uses three of the virtual machines and the QA department uses two virtual machines. Because the QA department needs larger amounts of CPU and memory, the administrator creates one resource pool for each group. The administrator sets CPU Shares to High for the QA department pool and to Normal for the Marketing department pool so that the QA department users can run automated tests. The second resource pool with fewer CPU and memory resources is sufficient for the lighter load of the marketing staff.

Whenever the QA department is not fully using its allocation, the marketing department can use the available resources. When there is resource contention because running virtual machines demand more resources than are available from the host, the resource shares configuration guides arbitration between the competing virtual machines.

Figure 1. Allocating Resources to Resource Pools
Diagram shows allocation of resources to resource pools.

You have two options for priority shares configuration that cause the priorities to be applied in different ways. The fixed shares option limits the adverse performance impact of resource contention to a single resource pool and all its descendants. The scalable shares option distributes the performance impact across all resource pools, in proportion to their priority levels.

The chief benefit of configuring fixed shares for a parent resource pool is the predictability of performance for virtual machines within its child resource pools. You can know in advance that its virtual machines can demand a fixed fraction of a virtual resource available from a host or cluster. The drawback of configuring fixed shares is that adding virtual machines to a resource pool impacts the performance of all virtual machines in the same pool and its descendants because the resource pool is not entitled to allocate additional resources.

The chief benefit of configuring scalable shares for a parent resource pool is that resource allocation during contention is adjusted at run time to achieve a fair allocation to virtual machines beyond the boundary of a single resource pool. In effect, the child pool's resource entitlement expands to accommodate more virtual machines as they are added to the pool. The drawback of configuring scalable shares is that a child resource pool cannot isolate its virtual machines from the demands of virtual machines in other pools that draw from the same scalable parent resource pool.