From: "Paul E. McKenney" <paulmck@kernel.org>
To: Joel Fernandes <joel@joelfernandes.org>
Cc: rcu@vger.kernel.org, linux-kernel@vger.kernel.org, frederic@kernel.org
Subject: Re: [PATCH v9 00/13] rcu: call_rcu() power improvements
Date: Mon, 17 Oct 2022 07:07:26 -0700 [thread overview]
Message-ID: <20221017140726.GG5600@paulmck-ThinkPad-P17-Gen-1> (raw)
In-Reply-To: <CAEXW_YS8TkqX8acJESE54woR2adyiBOQq0ZRZKTLTqLGkkHPuQ@mail.gmail.com>
On Mon, Oct 17, 2022 at 09:47:00AM -0400, Joel Fernandes wrote:
> On Mon, Oct 17, 2022 at 9:37 AM Paul E. McKenney <paulmck@kernel.org> 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@joelfernandes.org/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@joelfernandes.org/
> > >
> [...]
> >
> > 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 ;-)
Yes, 20 years old, but with the qualifier "in the Linux kernel". ;-)
RCU was in DYNIX/ptx for almost ten years prior to that. And mechanisms
vaguely resembling RCU go back to Kung's and Lehman's 1980 paper entitled
"Concurrent Manipulation of Binary Search Trees". And maybe farther,
but that is the oldest citation I know of.
Thanx, Paul
> - 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
> > >
prev parent reply other threads:[~2022-10-17 14:07 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-16 16:22 Joel Fernandes (Google)
2022-10-16 16:22 ` [PATCH v9 01/13] rcu: Fix missing nocb gp wake on rcu_barrier() Joel Fernandes (Google)
2022-10-16 16:25 ` Joel Fernandes
2022-10-16 18:23 ` Paul E. McKenney
2022-10-16 16:22 ` [PATCH v9 02/13] rcu: Make call_rcu() lazy to save power Joel Fernandes (Google)
2022-10-16 16:22 ` [PATCH v9 03/13] rcu: Refactor code a bit in rcu_nocb_do_flush_bypass() Joel Fernandes (Google)
2022-10-16 16:22 ` [PATCH v9 04/13] rcu: shrinker for lazy rcu Joel Fernandes (Google)
2022-10-16 16:22 ` [PATCH v9 05/13] rcuscale: Add laziness and kfree tests Joel Fernandes (Google)
2022-10-16 16:22 ` [PATCH v9 06/13] percpu-refcount: Use call_rcu_flush() for atomic switch Joel Fernandes (Google)
2022-10-16 16:22 ` [PATCH v9 07/13] rcu/sync: Use call_rcu_flush() instead of call_rcu Joel Fernandes (Google)
2022-10-16 16:23 ` [PATCH v9 08/13] rcu/rcuscale: Use call_rcu_flush() for async reader test Joel Fernandes (Google)
2022-10-16 16:23 ` [PATCH v9 09/13] rcu/rcutorture: Use call_rcu_flush() where needed Joel Fernandes (Google)
2022-10-16 16:23 ` [PATCH v9 10/13] scsi/scsi_error: Use call_rcu_flush() instead of call_rcu() Joel Fernandes (Google)
2022-10-16 16:23 ` [PATCH v9 11/13] workqueue: Make queue_rcu_work() use call_rcu_flush() Joel Fernandes (Google)
2022-10-16 16:23 ` [PATCH v9 12/13] rxrpc: Use call_rcu_flush() instead of call_rcu() Joel Fernandes (Google)
2022-10-16 16:23 ` [PATCH v9 13/13] rcu/debug: Add wake-up debugging for lazy callbacks Joel Fernandes (Google)
2022-10-17 13:37 ` [PATCH v9 00/13] rcu: call_rcu() power improvements Paul E. McKenney
2022-10-17 13:47 ` Joel Fernandes
2022-10-17 14:07 ` Paul E. McKenney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221017140726.GG5600@paulmck-ThinkPad-P17-Gen-1 \
--to=paulmck@kernel.org \
--cc=frederic@kernel.org \
--cc=joel@joelfernandes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rcu@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®