• Peter Zijlstra's avatar
    sched/fair: Optimize per entity utilization tracking · 006cdf02
    Peter Zijlstra authored
    
    
    Currently the load_{sum,avg} and util_{sum,avg} tracking is asymmetric
    in that load tracking gets a 2^10 unit from the weight, but util gets
    no such factor.
    
    This results in more lost bits for util scaling and asymmetric scaling
    rules.
    
    Fix this by removing shifts, such that we gain the 2^10 factor from
    scaling. There is no risk of overflowing the u32 as the max value is
    now LOAD_AVG_MAX << 10, which is still well below UINT_MAX.
    
    This further entangles the assumption that both LOAD and CAPACITY
    shifts are the same (and 10) so put in an assertion for that.
    
    This fixes the math for the LOAD_RESOLUTION != 0 case.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    006cdf02
fair.c 217 KB