Understanding Scalable Shares
Configuring scalable shares for a parent resource pool means that all its child
resource pools are not isolated from each other. This avoids the resource dilution problem
within child resource pools, by expanding their resource entitlements when they have more
virtual machines running.The effect is to negate resource pool isolation while retaining the
proportions of resource pool priority levels. A high
priority resource pool
is entitled to give twice as much of the available resource to its virtual machines, in
comparison with a normal
priority sibling resource pool, but all virtual
machines suffer proportionately when many virtual machines run in the normal priority
pool.
To illustrate the use of the scalable shares option, consider how it might apply to a
fictional situation in which a data center is configured, with non-scalable shares, to
support three divisions of a business. Division 1 is supported by resource pool RP1,
which is configured as high
priority, in an attempt to compensate for
the dilution of RP1's resources that resulted from adding new virtual machines to RP1.
Some virtual machines in RP1 are individually configured to get higher priority than
their siblings.
As a result of resource dilution within RP1
in a fixed shares configuration, some of RP1's virtual machines are entitled to exactly
the same resource allocation as RP2's virtual machines, even though RP2 is configured as
normal
priority but RP1 is configured as high
priority. Some users in Division 1 are disappointed because they expected their virtual
machines to receive twice the allotment of RP2's virtual machines. The company's CIO
agrees to reconfigure the data center to take advantage of the scalable shares
option.
With scalable shares enabled on a parent resource pool, resource entitlements change. Because RP1 has more virtual machines than RP2 or RP3, it is entitled to a larger fraction of the root resource pool's resources during a resource contention situation. This is represented mathematically by multiplying the resource pool's numeric shares by the total of the shares of its children.
- Convert the priority levels of its
child virtual machines into numeric shares equivalents, in the same way as in a
fixed shares configuration: Multiply
VirtualMachine.config.hardware.numCPU
by a constant that depends on the priority level. The constants are2000
,1000
, and500
forhigh
,normal
, andlow
respectively. - If the resource pool has child resource pools, convert their priority levels into numeric shares equivalents, recursively.
- Do the same conversion for the resource pool itself. For the purpose of this conversion, all resource pools are assigned an implicit size of 4 vCPUs.
- Sum the children's numeric shares and multiply the sum by the parent's numeric shares.
- Repeat steps 1-4 for all the parent's siblings.
- Allocate the available resources among all siblings, in proportion to the products from steps 4 and 5.
As a result of the scalable shares
configuration, Division 1 users find their virtual machine performance improved, but
Divisions 2 and 3 suffer by comparison. To rectify this, the IT department resets the
priority levels of RP1, RP2, and RP3 to normal
. This adjustment leaves
virtual machine performance comparable across divisions: high
priority
virtual machines get twice the resource allocation of normal
priority
virtual machines, even across resource pool boundaries.
A best practice when configuring scalable shares is to configure resource pools to the
normal
priority level and apply high
priority
levels or low
priority levels to specific virtual machines.