Understanding Expandable Reservations

Expandable reservations enable dynamic allocation of resources to meet the minimum requirements of virtual machines within a number of resource pools. When you set the expandableReservation property on sibling resource pools, you enable them to act as a single resource pool for the purpose of providing the minimum of resource that virtual machines need to power on. When a virtual machine starts in any one of the sibling resource pools, it draws its reservation amount from the parent's reservation amount, rather than from its own resource pool.

If the parent resource pool is also expandable, it can draw resources in turn from its parent, and the sequence can continue in this way until it ends with a parent resource pool that has a fixed reservation.

To configure expandable reservations, set the expandableReservation property to true in the ResourceConfigSpec.cpuAllocation or ResourceConfigSpec.memoryAllocation of sibling resource pools to true. For maximum flexibility, set the reservation amount of each sibling pool 0. When sibling pools do not reserve any resources, any virtual machine that starts in the sibling pools will take its reservation amount from the parent pool's reservation.

If a sibling pool contains critical virtual machines whose reservations need to be prioritized, set the pool's reservation to the sum of the reservations of the prioritized virtual machines. That reservation amount is saved for the resource pool's virtual machines, and is unavailable for siblings to use.

To illustrate how expandable reservations work, consider the following examples.