• Valentin Schneider's avatar
    sched/fair: Set rq->rd->overload when misfit · 757ffdd7
    Valentin Schneider authored
    Idle balance is a great opportunity to pull a misfit task. However,
    there are scenarios where misfit tasks are present but idle balance is
    prevented by the overload flag.
    
    A good example of this is a workload of n identical tasks. Let's suppose
    we have a 2+2 Arm big.LITTLE system. We then spawn 4 fairly
    CPU-intensive tasks - for the sake of simplicity let's say they are just
    CPU hogs, even when running on big CPUs.
    
    They are identical tasks, so on an SMP system they should all end at
    (roughly) the same time. However, in our case the LITTLE CPUs are less
    performing than the big CPUs, so tasks running on the LITTLEs will have
    a longer completion time.
    
    This means that the big CPUs will complete their work earlier, at which
    point they should pull the tasks from the LITTLEs. What we want to
    happen is summarized as follows:
    
    a,b,c,d are our CPU-hogging tasks _ signifies idling
    
      LITTLE_0 | a a a a _ _
      LITTLE_1 | b b b b _ _
      ---------|-------------
        big_0  | c c c c a a
        big_1  | d d d d b b
    		    ^
    		    ^
          Tasks end on the big CPUs, idle balance happens
          and the misfit tasks are pulled straight away
    
    This however won't happen, because currently the overload flag is only
    set when there is any CPU that has more than one runnable task - which
    may very well not be the case here if our CPU-hogging workload is all
    there is to run.
    
    As such, this commit sets the overload flag in update_sg_lb_stats when
    a group is flagged as having a misfit task.
    Signed-off-by: default avatarValentin Schneider <valentin.schneider@arm.com>
    Signed-off-by: default avatarMorten Rasmussen <morten.rasmussen@arm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dietmar.eggemann@arm.com
    Cc: gaku.inami.xh@renesas.com
    Cc: vincent.guittot@linaro.org
    Link: http://lkml.kernel.org/r/1530699470-29808-10-git-send-email-morten.rasmussen@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    757ffdd7
sched.h 58 KB