Re: [GIT PULL rcu/urgent] Auto-expedite initial SRCU grace periods
From: Ingo Molnar
Date: Thu Apr 27 2017 - 02:12:03 EST
* Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> Hello, Ingo,
>
> This series greatly reduces the performance degradation of Tree SRCU
> on a CPU-hotplug stress test. The effect was not subtle: Mike Galbraith
> measured Classic SRCU at 55 seconds and Tree SRCU at more than 16 -minutes-
> for this test. Mike collected ftrace data that showed that Classic SRCU
> was auto-expediting invocations of synchronize_srcu() that found SRCU
> completely idle. This series therefore adds this auto-expedite capability
> to Tree SRCU, bringing the performance shortfall to less than ten seconds,
> which is a great improvement over the initial shortfall of 15 minutes.
>
> I will continue tuning, but this improvement seemed worth a pull request,
> in order to get the base solution some more test time in -tip. Note that
> two of the commits are not strictly necessary, but they are reasonably
> simple, they conflict with the three main commits, and the risk of
> disentangling them seemed to greatly exceed the risk of pushing them in.
> Of course, if you believe that they really should be delayed, please let
> me know and I can disentangle them. They are: (1) c7e88067c1ae ("srcu:
> Exact tracking of srcu_data structures containing callbacks") and
> (2) 7f6733c3c648 ("srcu: Make rcutorture writer stalls print SRCU GP
> state").
>
> These commits are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/urgent
>
> for you to fetch changes up to 22607d66bbc3e81140d3bcf08894f4378eb36428:
>
> srcu: Specify auto-expedite holdoff time (2017-04-26 16:32:17 -0700)
>
> ----------------------------------------------------------------
> Paul E. McKenney (5):
> srcu: Exact tracking of srcu_data structures containing callbacks
> srcu: Make rcutorture writer stalls print SRCU GP state
> srcu: Expedited grace periods with reduced memory contention
> srcu: Expedite first synchronize_srcu() when idle
> srcu: Specify auto-expedite holdoff time
>
> Documentation/admin-guide/kernel-parameters.txt | 8 +
> include/linux/srcuclassic.h | 14 ++
> include/linux/srcutiny.h | 12 ++
> include/linux/srcutree.h | 13 +-
> kernel/rcu/rcutorture.c | 8 +-
> kernel/rcu/srcutree.c | 242 ++++++++++++++++++++----
> kernel/rcu/tree.c | 12 +-
> 7 files changed, 255 insertions(+), 54 deletions(-)
Pulled, thanks a lot Paul!
Ingo