• Peter Zijlstra's avatar
    sched: Cure more NO_HZ load average woes · 0f004f5a
    Peter Zijlstra authored
    There's a long-running regression that proved difficult to fix and
    which is hitting certain people and is rather annoying in its effects.
    
    Damien reported that after 74f5187a (sched: Cure load average vs
    NO_HZ woes) his load average is unnaturally high, he also noted that
    even with that patch reverted the load avgerage numbers are not
    correct.
    
    The problem is that the previous patch only solved half the NO_HZ
    problem, it addressed the part of going into NO_HZ mode, not of
    comming out of NO_HZ mode. This patch implements that missing half.
    
    When comming out of NO_HZ mode there are two important things to take
    care of:
    
     - Folding the pending idle delta into the global active count.
     - Correctly aging the averages for the idle-duration.
    
    So with this patch the NO_HZ interaction should be complete and
    behaviour between CONFIG_NO_HZ=[yn] should be equivalent.
    
    Furthermore, this patch slightly changes the load average computation
    by adding a rounding term to the fixed point multiplication.
    Reported-by: default avatarDamien Wyart <damien.wyart@free.fr>
    Reported-by: default avatarTim McGrath <tmhikaru@gmail.com>
    Tested-by: default avatarDamien Wyart <damien.wyart@free.fr>
    Tested-by: default avatarOrion Poplawski <orion@cora.nwra.com>
    Tested-by: default avatarKyle McMartin <kyle@mcmartin.ca>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: stable@kernel.org
    Cc: Chase Douglas <chase.douglas@canonical.com>
    LKML-Reference: <1291129145.32004.874.camel@laptop>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    0f004f5a
timer.c 47.5 KB