On Thu, 20 Dec 2018 at 12:19, Valentin Schneider <valentin.schnei...@arm.com> wrote: > > On 20/12/2018 07:55, Vincent Guittot wrote: > > newly idle load balance is not always triggered when a cpu becomes idle. > > This prevent the scheduler to get a chance to migrate task for asym packing. > > Enable active migration because of asym packing during idle load balance > > too. > > > > Signed-off-by: Vincent Guittot <vincent.guit...@linaro.org> > > --- > > kernel/sched/fair.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > > index 9b31247..487c73e 100644 > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@ -8853,7 +8853,7 @@ static int need_active_balance(struct lb_env *env) > > { > > struct sched_domain *sd = env->sd; > > > > - if (env->idle == CPU_NEWLY_IDLE) { > > + if (env->idle != CPU_NOT_IDLE) { > > > > /* > > * ASYM_PACKING needs to force migrate tasks from busy but > > > > Regarding just extending the condition to include idle balance: > > Reviewed-by: Valentin Schneider <valentin.schnei...@arm.com> > > > As in the previous thread, I'll still argue that if you want to *reliably* > exploit newidle balances to do asym packing active balancing, you should > add some logic to raise rq->rd->overload when we notice some asym packing > could be done, so that it can be leveraged by a higher-priority CPU doing > a newidle balance.
The source cpu with the task is never overloaded. We need to start the load balance to know that it's worth migrating the task. > > Otherwise the few newidle asym-packing active balances you'll get will be > due to somewhat random luck because we happened to set that overload flag > at some point.