Re: [PATCH RFC 1/2] sched: Minimize the idle cpu selection race window.

From: Uladzislau Rezki
Date: Thu Nov 30 2017 - 07:30:59 EST


On Wed, Nov 29, 2017 at 07:15:21PM +0100, Mike Galbraith wrote:
> On Wed, 2017-11-29 at 11:41 +0100, Uladzislau Rezki wrote:
> > On Tue, Nov 28, 2017 at 11:49:11AM +0100, Mike Galbraith wrote:
> > > On Tue, 2017-11-28 at 10:34 +0100, Uladzislau Rezki wrote:
> > > > On Fri, Nov 24, 2017 at 07:46:30PM +0100, Mike Galbraith wrote:
> > > >
> > > > > My view is you're barking up the wrong tree: you're making the idle
> > > > > data SIS is using more accurate, but I question the benefit.  That it
> > > > > makes an imperfect placement decision occasionally due to raciness is
> > > > > nearly meaningless compared to the cost of frequent bounce.
> > >
> > > > Before sitting down and start testing, i just illustrated how we can
> > > > apply claim_wake_up to ilb asking community a specific view on it:
> > > > drawbacks, pros/cons, proposals etc.
> > >
> > > Even if you make the thing atomic, what is ILB supposed to do, look
> > > over its shoulder every step of the way and sh*t it's pants if somebody
> > > touches claim_wake_up as it's about to or just after it did something?
> > If nohz.idle_cpus_mask is set for particular CPU together with claim mask,
> > it means that TIF_NEED_RESCHED is coming or is already in place. When a
> > CPU hits idle_thread a claim bit gets reset and proceed to no_hz mode
> > unless it runs into scheduler_ipi or so.

>
> Which means nothing to an LB operation in progress.
>
<snip>
static void nohz_idle_balance(...)
...
/*
* If this cpu gets work to do, stop the load balancing
* work being done for other cpus. Next load
* balancing owner will pick it up.
*/
if (need_resched())
break;
...
<snip>

>
> But whatever, I'm not going to argue endlessly about something I think
> should be blatantly obvious.  IMO, this is a couple points shy of
> pointless.  That's my 'C' to this RFC in a nutshell.  I'm done.
>
Thank you.

Vlad