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.