Difference between revisions of "Scheduler/NormalizedWeights"
m (Aloga moved page Scheduler/NormalizedWeigts to Scheduler/NormalizedWeights) |
|||
Line 4: | Line 4: | ||
== Overview == | == Overview == | ||
− | Currently the | + | Currently the scheduler is using the raw values directly from the available weighers, |
− | them. This makes difficult to properly use multipliers for establishing | + | instead of normalizing them. This makes difficult to properly use multipliers for establishing |
the relative importance between two weighters (one big magnitude could | the relative importance between two weighters (one big magnitude could | ||
− | shade a smaller one). For example, a | + | shade a smaller one). For example, a weigher that is returning 0 and 1 as |
values will need a multiplier that is big enough to be taking into account with | values will need a multiplier that is big enough to be taking into account with | ||
− | regard to the RAM | + | regard to the RAM weigher, that would return higher values. |
This blueprint aims to introduce weight normalization so that we can apply | This blueprint aims to introduce weight normalization so that we can apply | ||
− | + | multiple weighers easily. The commit does not change the behavior per-se | |
− | since currently we only have 1 | + | since currently we only have 1 weigher. All the weights will be |
normalized between 0.0 and 1.0, so that the final weight for a host | normalized between 0.0 and 1.0, so that the final weight for a host | ||
will be as follows: | will be as follows: | ||
Line 20: | Line 20: | ||
This way it is easier for a resource provider to configure and establish the | This way it is easier for a resource provider to configure and establish the | ||
− | importance between the | + | importance between the weighers. |
Two kinds of normalization will be provided: | Two kinds of normalization will be provided: | ||
− | * If the | + | * If the weigher specifies the upper and lower values, the weighed objects will be normalized with regard to these values. |
− | * In the case that the | + | * In the case that the weigher does not supply the lower and upper limits for the weighed objects, the maximum and minimum values from the weighed objects will be used. |
== Examples == | == Examples == | ||
== Comments == | == Comments == | ||
− | + | See commends in https://review.openstack.org/#/c/27160/ : | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 11:15, 10 June 2013
Contents
Overview
Currently the scheduler is using the raw values directly from the available weighers, instead of normalizing them. This makes difficult to properly use multipliers for establishing the relative importance between two weighters (one big magnitude could shade a smaller one). For example, a weigher that is returning 0 and 1 as values will need a multiplier that is big enough to be taking into account with regard to the RAM weigher, that would return higher values.
This blueprint aims to introduce weight normalization so that we can apply multiple weighers easily. The commit does not change the behavior per-se since currently we only have 1 weigher. All the weights will be normalized between 0.0 and 1.0, so that the final weight for a host will be as follows:
weight = w1_multiplier * norm(w1) + w2_multiplier * norm(w2) + ...
This way it is easier for a resource provider to configure and establish the importance between the weighers.
Two kinds of normalization will be provided:
- If the weigher specifies the upper and lower values, the weighed objects will be normalized with regard to these values.
- In the case that the weigher does not supply the lower and upper limits for the weighed objects, the maximum and minimum values from the weighed objects will be used.
Examples
Comments
See commends in https://review.openstack.org/#/c/27160/ :