[openstack-dev] Weight normalization in scheduler

Sandy Walsh sandy.walsh at rackspace.com
Thu Aug 1 12:07:52 UTC 2013



On 08/01/2013 04:24 AM, Álvaro López García wrote:
> Hi all.
> 
> TL;DR: I've created a blueprint [1] regarding weight normalization.
> I would be very glad if somebody could examine and comment it.

Something must have changed. It's been a while since I've done anything
with the scheduler, but normalized weights is the way it was designed
and implemented.

The separate Weighing plug-ins are responsible for taking the specific
units (cpu load, disk, ram, etc) and converting them into normalized
0.0-1.0 weights. Internally the plug-ins can work however they like, but
their output should be 0-1.

The multiplier, however, could scale this outside that range (if disk is
more important than cpu, for example).

Actually, I remember it being offset + scale * weight, so you could put
certain factors in bands: cpu: 1000+, disk: 10000+, etc. Hopefully
offset is still there too?

-S



> Recently I've been developing some weighers to be used within nova and I
> found that the weight system was using raw values. This makes difficult
> for an operator to stablish the importance of a weigher against the rest
> of them, since the values can range freely and one big magnitude
> returned by a weigher could shade another one.
> 
> One solution is to inflate either the multiplier or the weight that is
> returned by the weigher, but this is an ugly hack (for example, if you
> increase the RAM on your systems, you will need to adjust the
> multipliers again). A much better approach is to use weight
> normalization before actually using the weights
> 
> With weight normalization a weigher will still return a list of RAW
> values, but the BaseWeightHandler will normalize all of them into a
> range of values (0.0 and 1.0) before adding them up. This way, a weight
> for a given object will be:
> 
>   weight = w1_multiplier * norm(w1) + w2_multiplier * norm(w2) + ...
> 
> This makes easier to stablish the importance of a weigher regarding the
> rest, by just adjusting the multiplier. This is explained in [1], and
> implemented in [2] (with some suggestions by the reviewers).
> 
> [1] https://blueprints.launchpad.net/openstack/?searchtext=normalize-scheduler-weights
> [2] https://review.openstack.org/#/c/27160/
> 
> Thanks for your feedback,
> 



More information about the OpenStack-dev mailing list