Re: sched: tweak select_idle_sibling to look for idle threads
From: Yuyang Du
Date: Sat May 07 2016 - 05:06:10 EST
On Sun, May 01, 2016 at 11:20:25AM +0200, Mike Galbraith wrote:
> On Sun, 2016-05-01 at 10:53 +0200, Peter Zijlstra wrote:
> > On Sun, May 01, 2016 at 09:12:33AM +0200, Mike Galbraith wrote:
> > > On Sat, 2016-04-30 at 14:47 +0200, Peter Zijlstra wrote:
> >
> > > > Can you guys have a play with this; I think one and two node tbench are
> > > > good, but I seem to be getting significant run to run variance on that,
> > > > so maybe I'm not doing it right.
> > >
> > > Nah, tbench is just variance prone. It got dinged up at clients=cores
> > > on my desktop box, on 4 sockets the high end got seriously dinged up.
> >
> > Ouch, yeah, big hurt. Lets try that again... :-)
>
> Yeah, box could use a little bandaid and a hug :)
>
> Playing with Chris' benchmark, seems the biggest problem is that we
> don't buddy up waker of many and it's wakees in a node.. ie the wake
> wide thing isn't necessarily our friend when there are multiple wakers
> of many. If I run an instance per node with one mother of all work in
> autobench mode, it works exactly as you'd expect, game over is when
> wakees = socket size. It never get's near that point if I let things
> wander, it beats itself up well before we get there.
Maybe give the criteria a bit margin, not just wakees tend to equal llc_size,
but the numbers are so wild to easily break the fragile condition, like:
if (master * 100 < slave * factor * 110)
return 0;
And since you accumulate wakee number (and decay at HZ), this check tends to
not satisfy ever?
if (slave < factor)
return 0;