Re: [PATCH v2 00/19] Fixes for sched/numa_balancing
From: Peter Zijlstra
Date: Mon Jul 23 2018 - 12:47:48 EST
On Mon, Jul 23, 2018 at 09:29:54AM -0700, Srikar Dronamraju wrote:
> * Peter Zijlstra <peterz@xxxxxxxxxxxxx> [2018-07-23 17:21:47]:
>
> > On Mon, Jul 23, 2018 at 08:09:55AM -0700, Srikar Dronamraju wrote:
> >
> > > > > sched/numa: Stop multiple tasks from moving to the cpu at the same time
> > >
> > > This patch has go-ahead from Mel and Rik and no outstanding comments.
> >
> > I left it out because it's part of the big xchg() mess.
> >
> > In particular:
> >
> > + if (xchg(&rq->numa_migrate_on, 1))
> > + return;
> > +
> > + if (env->best_cpu != -1) {
> > + rq = cpu_rq(env->best_cpu);
> > + WRITE_ONCE(rq->numa_migrate_on, 0);
> > + }
> >
> > I'm again confused by clearing numa_migrate_on at this point..
>
> First task choose a cpu to swap/migrate, sets the cpu to best_cpu and
> also numa_migrate_on. Next it finds a better cpu to swap/move. Now if
> the task is able to move to the better cpu, then it should clear
> numa_migrate_on on the previous best_cpu.
>
> If we dont reset numa_migrate_on on finding a better cpu, the
> numa_migrate_on stays set for the previous cpu, causing previous cpu to
> never be a target of numa balance.
Don't tell me, write better patches.