|
|
Subscribe / Log in / New account

rcu/nocb: De-offload and re-offload support v2

From:  Frederic Weisbecker <frederic-AT-kernel.org>
To:  "Paul E . McKenney" <paulmck-AT-kernel.org>
Subject:  [RFC PATCH 00/12] rcu/nocb: De-offload and re-offload support v2
Date:  Mon, 21 Sep 2020 14:43:39 +0200
Message-ID:  <20200921124351.24035-1-frederic@kernel.org>
Cc:  LKML <linux-kernel-AT-vger.kernel.org>, Frederic Weisbecker <frederic-AT-kernel.org>, Steven Rostedt <rostedt-AT-goodmis.org>, Mathieu Desnoyers <mathieu.desnoyers-AT-efficios.com>, Lai Jiangshan <jiangshanlai-AT-gmail.com>, Joel Fernandes <joel-AT-joelfernandes.org>, Josh Triplett <josh-AT-joshtriplett.org>
Archive-link:  Article

Hi,

This is the second attempt to make rcu-nocb mutable at runtime. See
v1 there: https://lwn.net/Articles/820544/

This time a new approach, as per Paul's suggestion, is to ensure that
callbacks are still served locally until nocb kthreads are fully ready
or fully asleep. This is using a state machine implemented with a mask
(see patch 3/12 for details).

There is still some small polishing to do, as can be seen in the last
patches, to make sure that local callbacks processing is correctly
handled outside of strict softirq (or rcuc) mode.

Thanks.

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
	rcu/nocb

HEAD: 6abe8408307eaeb03b4a0470945943c1decbc4b3

Thanks,
	Frederic
---

Frederic Weisbecker (12):
      rcu: Implement rcu_segcblist_is_offloaded() config dependent
      rcu: Turn enabled/offload states into a common flag
      rcu: Provide basic callback offloading state machine bits
      rcu: De-offloading CB kthread
      rcu: De-offloading GP kthread
      rcu: Re-offload support
      rcu: Shutdown nocb timer on de-offloading
      rcu: Flush bypass before setting SEGCBLIST_SOFTIRQ_ONLY
      rcu: Set SEGCBLIST_SOFTIRQ_ONLY at the very last stage of de-offloading
      rcu: Process batch locally as long as offloading isn't complete
      rcu: Locally accelerate callbacks as long as offloading isn't complete
      rcu: Nocb (de)activate through sysfs


 include/linux/rcu_segcblist.h | 119 ++++++++++++++++-
 include/linux/rcupdate.h      |   4 +
 kernel/cpu.c                  |  23 ++++
 kernel/rcu/rcu_segcblist.c    |  13 +-
 kernel/rcu/rcu_segcblist.h    |  45 ++++++-
 kernel/rcu/tree.c             |  32 ++---
 kernel/rcu/tree.h             |   2 +
 kernel/rcu/tree_plugin.h      | 297 +++++++++++++++++++++++++++++++++++++++---
 8 files changed, 491 insertions(+), 44 deletions(-)


Copyright © 2020, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds