On Mon, Oct 17, 2022 at 9:37 AM Paul E. McKenney <paulmck@xxxxxxxxxx> wrote: > > On Sun, Oct 16, 2022 at 04:22:52PM +0000, Joel Fernandes (Google) wrote: > > v9 version of RCU lazy patches based on rcu/next branch. > > Only change since v8 is this discussion: > > https://lore.kernel.org/rcu/20221011180142.2742289-1-joel@xxxxxxxxxxxxxxxxx/T/#m8eff15110477f3430b3b02561b66f7b0d34a73b0 > > > > To facilitate easier merge, I dropped tracing and other patches and just > > implemented the new changes. I will post the tracing patches later along with > > rcutop as I need to add new tracepoints that Frederic suggested. > > > > Main recent changes: > > 1. rcu_barrier() wake up only for lazy bypass list. > > 2. Make all call_rcu() default-lazy and add call_rcu_flush() API. > > 3. Take care of some callers using call_rcu_flush() API. > > 4. Several refactorings suggested by Paul/Frederic. > > 5. New call_rcu() to call_rcu_flush() conversions by Joel/Vlad/Paul. > > > > I am seeing good performance and power with these patches on real ChromeOS x86 > > asymmetric hardware. > > > > Earlier cover letter with lots of details is here: > > https://lore.kernel.org/all/20220901221720.1105021-1-joel@xxxxxxxxxxxxxxxxx/ > > [...] > > Very good, thank you all! > > I have pulled these in for further review and testing. > > I am holding off on the last one ("rcu/debug: Add wake-up debugging for > lazy callbacks") for the immediate future, but let's see how it goes. Thanks! And nice timing with RCU just turning 20 years old ;-) - Joel > > Thanx, Paul > > > Frederic Weisbecker (1): > > rcu: Fix missing nocb gp wake on rcu_barrier() > > > > Joel Fernandes (Google) (9): > > rcu: Make call_rcu() lazy to save power > > rcu: Refactor code a bit in rcu_nocb_do_flush_bypass() > > rcuscale: Add laziness and kfree tests > > percpu-refcount: Use call_rcu_flush() for atomic switch > > rcu/sync: Use call_rcu_flush() instead of call_rcu > > rcu/rcuscale: Use call_rcu_flush() for async reader test > > rcu/rcutorture: Use call_rcu_flush() where needed > > rxrpc: Use call_rcu_flush() instead of call_rcu() > > rcu/debug: Add wake-up debugging for lazy callbacks > > > > Uladzislau Rezki (2): > > scsi/scsi_error: Use call_rcu_flush() instead of call_rcu() > > workqueue: Make queue_rcu_work() use call_rcu_flush() > > > > Vineeth Pillai (1): > > rcu: shrinker for lazy rcu > > > > drivers/scsi/scsi_error.c | 2 +- > > include/linux/rcupdate.h | 7 ++ > > kernel/rcu/Kconfig | 15 +++ > > kernel/rcu/lazy-debug.h | 154 +++++++++++++++++++++++++++ > > kernel/rcu/rcu.h | 8 ++ > > kernel/rcu/rcuscale.c | 70 +++++++++++- > > kernel/rcu/rcutorture.c | 16 +-- > > kernel/rcu/sync.c | 2 +- > > kernel/rcu/tiny.c | 2 +- > > kernel/rcu/tree.c | 149 ++++++++++++++++++-------- > > kernel/rcu/tree.h | 12 ++- > > kernel/rcu/tree_exp.h | 2 +- > > kernel/rcu/tree_nocb.h | 217 ++++++++++++++++++++++++++++++++------ > > kernel/workqueue.c | 2 +- > > lib/percpu-refcount.c | 3 +- > > net/rxrpc/conn_object.c | 2 +- > > 16 files changed, 565 insertions(+), 98 deletions(-) > > create mode 100644 kernel/rcu/lazy-debug.h > > > > -- > > 2.38.0.413.g74048e4d9e-goog > >