Understanding Fixed Reservations
A fixed reservation for a resource pool provides a way to guarantee that all virtual machines running simultaneously within the pool have access to a minimum quantity of the resource. The pool's reservation should be large enough to allocate among the virtual machines such that each one has its configured minimum required to start up.
To configure fixed reservations, set the
epandableReservation
property to false
in
ResourceConfigSpec.ResourceAllocationInfo
. Set the pool's
reservation
amount to an aggregate value that is sufficient to
support the maximum number of virtual machines that need to run concurrently within the
resource pool. If the pool has nested resource pools that are also configured for fixed
reservations, you should determine their reservation
amounts in the
same way, recursively.
When you configure a resource pool hierarchy for fixed reservations, consider these guidelines:
- A resource pool that contains only virtual machines should be configured with a reservation amount at least as great as the sum of the reservations of its children, or as many of them as need to run concurrently. Otherwise, one or more virtual machines will fail to get its minimum resource allocation and the host will not start it.
- A resource pool that contains only nested resource pools configured for
fixed reservations must be configured with a reservation amount at least as great as
the sum of the reservations of its children. This ensures that its child resource
pools can fulfill their obligations to their own children, according to their
configured
reservation
amounts. If you cannot configure the parent pool with an adequate amount of the resource, consider configuring the nested resource pools for expandable reservations instead. - A resource pool that contains both virtual machines and nested resource pools is not a best practice, because it can complicate configuration management. If you configure a resource pool in this way, you should first make sure the virtual machines can receive their own reservation amount, and then configure reservations for the nested pools from the remainder of the parent's reservation after subtracting the virtual machine reservations.
Before you create new child resource pools, check
available resources in the parent pool. The ResourcePool.runtimeInfo
property is a ResourcePoolRuntimeInfo
data object. The
ResourcePoolRuntimeInfo.cpu
and
ResourcePoolRuntimeInfo.memory
properties are
ResourcePoolResourceUsage
objects with resource usage information,
including an unreservedForPool
property. If the parent pool does not
have enough available resources, reconfigure the reservation values of child pools
before adding the new pool.