On Wed, 2017-02-08 at 09:43 +0100, Uladzislau Rezki wrote: > From: Uladzislau 2 Rezki <[email protected]> > > A load balancer calculates imbalance factor for particular shed ^sched > domain and tries to steal up the prescribed amount of weighted load. > However, a small imbalance factor would sometimes prevent us from > stealing any tasks at all. When a CPU is newly idle, it should > steal first task which passes a migration criteria. s/passes a/meets the > > Signed-off-by: Uladzislau 2 Rezki <[email protected]> > --- > kernel/sched/fair.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 232ef3c..29e0d7f 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > > > env->loop++; > @@ -6824,8 +6832,9 @@ static int detach_tasks(struct lb_env *env) > > > > if (sched_feat(LB_MIN) && load < 16 && > !env->sd->nr_balance_failed) > > > > > goto next; > > -> > > if ((load / 2) > env->imbalance) > -> > > > goto next; > +> > > if (env->idle != CPU_NEWLY_IDLE) > +> > > > if ((load / 2) > env->imbalance) > +> > > > > goto next;
Those two ifs could be one ala if (foo && bar).

