Scheduler: Normalize Weights (initial work only)

Registered by Alvaro Lopez

Blueprint information

Andrew Laski
Alvaro Lopez
Alvaro Lopez
Series goal:
Accepted for icehouse
Milestone target:
milestone icon 2014.1
Started by
Alvaro Lopez
Completed by
John Garbutt

Related branches



Gerrit topic:,topic:bp/normalize-scheduler-weights,n,z

Addressed by: <-- merged
    Normalize the scheduler weights instead of using raw values.

Addressed by:
    Modify RAM weigher so that it can be percentage based

Addressed by:
    Use stacking flags instead of negative multipliers in weighers

Addressed by:
    Remove mute_weight_value option on mute child weigher

I had marked this approved last cycle, but it has been long enough since I looked over it that I'd like someone (me or someone else) to go back through this before approving for Icehouse. --russellb

The feature makes sense, and should help simplify some things for deployers. Because it does change the meanings of multipliers that could be configured already I think there needs to be some documentation on what this means for upgrades. --alaski

@alaski: Yes, I do agree. The impact in the scheduler is low, since there is only one weigher, but things change in the cells scheduler. Where should I put that documentation? In the commit itself? In the BP wiki page?

I think you should add it to the BP wiki page, but then also on each commit as it makes sense. An overall plan on the BP would be helpful, and I'm happy to approve this when that's done. And then by adding a DocImpact tag on commit messages with targeted information it will help the docs contributors know what to update. --alaski

@alaski: Each commit has its own DocImpact tag with the possible impact in existing deployments. I will add them to the wiki page.

changes punted to Juno:

    Modify RAM weigher so that it can be percentage based
    Use stacking flags instead of negative multipliers in weighers
    Remove mute_weight_value option on mute child weigher

Apologies, this missed the deadline for Feature Freeze. Marking this one as Implemented, due to the upgrade impact, so please open a new blueprint for the remaining patches. Please rebase patches as soon as Juno opens, and we will try to get this in during that period. --johnthetubaguy (5th March 2014)

Done in -- aloga (6th March 2014)

Upgrade impact of merged changes:

Addressed by:
    Normalize the scheduler weights instead of using raw values.

This has an upgrade impact:
* Weights are normalized, so there is no need to inflate multipliers
   artificially. The maximum weight that a weigher will put for a node is 1.0
   and the minimum is 0.0.
* nova.cells.weights.weight_offset.WeightOffsetWeigher introduces a new
  configuration option 'offset_weight_multiplier'

Addressed by:
    Propose: Normalize Weights (adapt weighers)

Addressed by:
    Propose: Implement percentage-based RAM Weigher


Work Items

Work items:
[aloga] Refactor weights.BaseWeigher so that it is an ABC: DONE
[aloga] Adapt weighers to use the new weights.BaseWeigher: DONE
[aloga] Implement weight normalization: DONE
[aloga] Introduce stacking flags for the weighers that neede them: POSTPONED
[aloga] Remove unecessary options from weighers: POSTPONED
[aloga] Add RamWeigher so that percentages can be used instad of absolute values: POSTPONED

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.