Setting LBF_ALL_PINNED during active load balance is only valid when there is only 1 running task on the rq otherwise this ends up increasing the balance interval whereas other tasks could migrate after the next interval once they become cache-cold as an example.
Signed-off-by: Vincent Guittot <[email protected]> --- kernel/sched/fair.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5428b8723e61..69a455113b10 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -9759,7 +9759,8 @@ static int load_balance(int this_cpu, struct rq *this_rq, if (!cpumask_test_cpu(this_cpu, busiest->curr->cpus_ptr)) { raw_spin_unlock_irqrestore(&busiest->lock, flags); - env.flags |= LBF_ALL_PINNED; + if (busiest->nr_running == 1) + env.flags |= LBF_ALL_PINNED; goto out_one_pinned; } -- 2.17.1

