Re: [patch] sched: minimalist select_idle_sibling() bouncing cow syndrome fix

Mike Galbraith
2013-01-28T11:28:25Z

On Mon, 2013-01-28 at 12:21 +0100, Ingo Molnar wrote:
> * Mike Galbraith <bitbucket@online.de> wrote:
>
> > On Mon, 2013-01-28 at 11:53 +0100, Ingo Molnar wrote:
> > > * Mike Galbraith <bitbucket@online.de> wrote:
> > >
> > > > If the previous CPU is cache affine and idle, select it.
> > >
> > > No objections in principle - but would be nice to have a
> > > changelog with numbers, % of improvement included and so?
> >
> > Well, that like was my changelog, guess it needs improvement.
> >
> > Take 2.
> >
> > sched: minimalist select_idle_sibling() bouncing cow syndrome fix
> >
> > If the previous CPU is cache affine and idle, select it.
> >
> > The current implementation simply traverses the sd_llc domain,
> > taking the first idle CPU encountered, which walks buddy pairs
> > hand in hand over the package, inflicting excruciating pain.
> >
> > 1 tbench pair (worst case) in a 10 core + SMT package:
> >
> > pre 15.22 MB/sec 1 procs
> > post 252.01 MB/sec 1 procs
>
> Drool ... :-)

Yeah, it really is _that_ fugly as is.

> What would be a 'contrarian' test - i.e. a test where this could
> hurt most?

There is none. It cuts off no preemption escape routes for pgbench,
still has both good and evil faces for all to see, and some to turn to
stone ;-) It only does one thing, don't do the unspeakable.

-Mike