Re: TREE_SRCU slows hotplug by factor ~16

From: Paul E. McKenney
Date: Mon Apr 24 2017 - 02:22:31 EST


On Mon, Apr 24, 2017 at 07:24:44AM +0200, Mike Galbraith wrote:
> On Sun, 2017-04-23 at 20:32 -0700, Paul E. McKenney wrote:
> > On Mon, Apr 24, 2017 at 04:48:09AM +0200, Mike Galbraith wrote:
> > > Greetings,
> > >
> > > Running Steven's hotplug stress script in tip w. CLASSIC_SRCU takes 55s
> > > in my i4790 box, whereas TREE_SRCU takes over 16m. (Master with the
> > > same config does it in 39s.. but then lockdep isn't enabled in master)
> >
> > That doesn't sound good...
> >
> > But exactly which version are you using? There were some 8x slowdowns
> > earlier this week that have since been fixed. Also, how many CPUs are
> > on your system?
>
> 4 cores+SMT, tip.yesterday_afternoon (precise!) was initial test point,
> tip.this_morning (v4.11-rc7-955-g76f8909e1cd8) is still slow.

OK, that is after the earlier fix! And modest in size as well.

Assuming 4ms per TREE_SRCU synchronize_srcu(), I end up with the
CLASSIC_SRCU doing a synchronize_srcu() every 200us or so, which
I am having a hard time believing. But it does matter, because
it controls what approach I take to fixing this.

Could you please collect an ftrace (or whatever) showing the timestamp
sequence of calls to synchronize_srcu(), synchronize_srcu_expedited(),
and call_srcu() during the execution of the stress script? If it is easy
to do, also the timestamp sequence of returns from synchronize_srcu()
and synchronize_srcu_expedited()?

Thanx, Paul