• Mike Galbraith's avatar
    sched: fix sleeper bonus limit · 5f01d519
    Mike Galbraith authored
    There is an Amarok song switch time increase (regression) under
    hefty load.
    
    What is happening is that sleeper_bonus is never consumed, and only
    rarely goes below runtime_limit, so for the most part, Amarok isn't
    getting any bonus at all.  We're keeping sleeper_bonus right at
    runtime_limit (sched_latency == sched_runtime_limit == 40ms) forever, ie
    we don't consume if we're lower that that, and don't add if we're above
    it.  One Amarok thread waking (or anybody else) will push us past the
    threshold, so the next thread waking gets nada, but will reap pain from
    the previous thread waking until we drop back to runtime_limit.  It
    looks to me like under load, some random task gets a bonus, and
    everybody else pays, whether deserving or not.
    
    This diff fixed the regression for me at any load rate.
    Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    5f01d519
sched_fair.c 28.6 KB