• Peter Zijlstra's avatar
    sched: fix overload performance: buddy wakeups · aa2ac252
    Peter Zijlstra authored
    Currently we schedule to the leftmost task in the runqueue. When the
    runtimes are very short because of some server/client ping-pong,
    especially in over-saturated workloads, this will cycle through all
    tasks trashing the cache.
    
    Reduce cache trashing by keeping dependent tasks together by running
    newly woken tasks first. However, by not running the leftmost task first
    we could starve tasks because the wakee can gain unlimited runtime.
    
    Therefore we only run the wakee if its within a small
    (wakeup_granularity) window of the leftmost task. This preserves
    fairness, but does alternate server/client task groups.
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    aa2ac252
sched.c 194 KB