Re: [PATCH 08/32] nohz: Move nohz load balancer selection into idle logic

Paul E. McKenney
2011-09-09T02:29:39Z

On Thu, Sep 08, 2011 at 04:08:54PM +0200, Frederic Weisbecker wrote:
> On Mon, Aug 29, 2011 at 04:45:17PM +0200, Peter Zijlstra wrote:
> > On Mon, 2011-08-15 at 17:52 +0200, Frederic Weisbecker wrote:
> > > We want the nohz load balancer to be an idle CPU, thus
> > > move that selection to strict dyntick idle logic.
> >
> > Again, the important part is missing, why is this correct?
> >
> > I'm not at all convinced this is correct, suppose all your cpus (except
> > the system CPU, which we'll assume has many tasks) are busy running 1
> > task. Then two of them get an extra task, now if those two happen to be
> > SMT siblings you want the load-balancer to pull on task out from the SMT
> > pair, however nobody is pulling since nobody is idle.
> >
> > AFAICT this breaks stuff and the ILB needs some serious attention in
> > order to fix this.
>
> Right, we have the support for trigger_load_balance() in scheduler_tick()
> that is still missing.
>
> What about using that CPU that has to stay awake with a periodic tick
> to handle jiffies? We could force that CPU to be the idle load balancer.
> The problem is perhaps to find the right frequency for doing that because
> we have all the rq to handle.

If this CPU can also be the RCU grace-period advancer of last resort,
that would make it easier to arrive at an improved RCU_FAST_NO_HZ.

Thanx, Paul