From: Joel Fernandes <joel@joelfernandes.org>
To: Frederic Weisbecker <frederic@kernel.org>
Cc: "Paul E . McKenney" <paulmck@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Josh Triplett <josh@joshtriplett.org>
Subject: Re: [PATCH 08/10] rcu: Allow to deactivate nocb on a CPU
Date: Wed, 10 Jun 2020 21:32:03 -0400 [thread overview]
Message-ID: <20200611013203.GA12037@google.com> (raw)
In-Reply-To: <20200604131029.GA27571@lenoir>
On Thu, Jun 04, 2020 at 03:10:30PM +0200, Frederic Weisbecker wrote:
> On Tue, May 26, 2020 at 06:49:08PM -0400, Joel Fernandes wrote:
> > On Tue, May 26, 2020 at 05:20:17PM -0400, Joel Fernandes wrote:
> >
> > > > The switch happens on the target with IRQs disabled and rdp->nocb_lock
> > > > held to avoid races between local callbacks handling and kthread
> > > > offloaded callbacks handling.
> > > > nocb_cb kthread is first parked to avoid any future race with
> > > > concurrent rcu_do_batch() executions. Then the cblist is set to offloaded
> > > > so that the nocb_gp kthread ignores this rdp.
> > >
> > > nit: you mean cblist is set to non-offloaded mode right?
> > >
> > > Also, could you clarify better the rcu_barrier bits in the changelog. I know
> > > there's some issue if the cblist has both offloaded and non-offloaded
> > > callbacks, but it would be good to clarify this here better IMHO.
> >
> > And for archival purposes: rcu_barrier needs excluding here because it is
> > possible that for a brief period of time, the callback kthread has been
> > parked to do the mode-switch, and it could be executing a bunch of callbacks
> > when it was asked to park.
> >
> > Meanwhile, more interrupts happen and more callbacks are queued which are now
> > executing in softirq. This ruins the ordering of callbacks that rcu_barrier
> > needs.
>
> I think in that case the callbacks would still be executed in order. We wait
> for the kthread to park before switching to softirq callback execution.
Ah ok, you are parking the CB kthread after the no-cb CB's are already
invoked (that's when parkme() is called -- i.e. after rcu_do_batch() in the
CB kthread runs).
Yeah, I don't see the purpose of acquiring rcu_barrier mutex either now. Once
you park, all CBs should have been invoked by the nocb CB thread right?
kthread_park() waits for the thread to be parked before proceeding. And you
don't de-offload before it is parked.
> Initially it was to avoid callback ordering issues but I don't recall
> exactly which. Maybe it wasn't actually needed. But anyway I'll keep it
> for the next version where, for a brief period of time, nocb kthread will
> be able to compete with callback execution in softirq.
Which nocb kthread is competing? Do you mean GP or CB?
Either way, could you clarify how does softirqs compete? Until the thread is
parked, you wouldn't de-offload. And once you de-offload, only then the
softirq would be executing callbacks. So at any point of time, it is
either the CB kthread executing CBs or the softirq executing CBs, not both.
Or did I miss something?
thanks,
- Joel
> I'll clarify that in the changelog.
>
> Thanks.
next prev parent reply other threads:[~2020-06-11 1:32 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-13 16:47 [PATCH 00/10] rcu: Allow a CPU to leave and reenter NOCB state Frederic Weisbecker
2020-05-13 16:47 ` [PATCH 01/10] rcu: Directly lock rdp->nocb_lock on nocb code entrypoints Frederic Weisbecker
2020-05-20 12:29 ` Joel Fernandes
2020-05-22 17:57 ` Paul E. McKenney
2020-05-26 15:21 ` Joel Fernandes
2020-05-26 16:29 ` Paul E. McKenney
2020-05-26 20:18 ` Joel Fernandes
2020-05-26 21:09 ` Paul E. McKenney
2020-05-26 21:27 ` Joel Fernandes
2020-05-26 22:29 ` Paul E. McKenney
2020-05-27 0:45 ` Joel Fernandes
2020-05-27 0:58 ` Paul E. McKenney
2020-06-04 11:41 ` Frederic Weisbecker
2020-06-04 16:36 ` Paul E. McKenney
2020-06-08 12:57 ` Frederic Weisbecker
2020-06-09 18:02 ` Paul E. McKenney
2020-06-10 13:12 ` Frederic Weisbecker
2020-06-10 14:02 ` Paul E. McKenney
2020-06-10 22:12 ` Frederic Weisbecker
2020-06-10 23:21 ` Paul E. McKenney
2020-06-11 1:32 ` Joel Fernandes
2020-05-13 16:47 ` [PATCH 02/10] rcu: Use direct rdp->nocb_lock operations on local calls Frederic Weisbecker
2020-05-13 16:47 ` [PATCH 03/10] rcu: Make locking explicit in do_nocb_deferred_wakeup_common() Frederic Weisbecker
2020-05-26 19:54 ` Joel Fernandes
2020-05-26 19:59 ` Joel Fernandes
2020-05-13 16:47 ` [PATCH 04/10] rcu: Implement rcu_segcblist_is_offloaded() config dependent Frederic Weisbecker
2020-05-13 18:20 ` Paul E. McKenney
2020-05-13 23:03 ` Frederic Weisbecker
2020-05-14 15:47 ` Paul E. McKenney
2020-05-13 16:47 ` [PATCH 05/10] rcu: Remove useless conditional nocb unlock Frederic Weisbecker
2020-05-13 16:47 ` [PATCH 06/10] rcu: Make nocb_cb kthread parkable Frederic Weisbecker
2020-06-11 1:34 ` Joel Fernandes
2020-05-13 16:47 ` [PATCH 07/10] rcu: Temporarily assume that nohz full CPUs might not be NOCB Frederic Weisbecker
2020-05-13 18:25 ` Paul E. McKenney
2020-05-13 23:08 ` Frederic Weisbecker
2020-05-14 15:50 ` Paul E. McKenney
2020-05-14 22:49 ` Frederic Weisbecker
2020-05-13 16:47 ` [PATCH 08/10] rcu: Allow to deactivate nocb on a CPU Frederic Weisbecker
2020-05-13 18:38 ` Paul E. McKenney
2020-05-13 22:45 ` Frederic Weisbecker
2020-05-14 15:47 ` Paul E. McKenney
2020-05-14 22:30 ` Frederic Weisbecker
2020-05-14 22:47 ` Paul E. McKenney
2020-05-14 22:55 ` Frederic Weisbecker
2020-05-26 21:20 ` Joel Fernandes
2020-05-26 22:49 ` Joel Fernandes
2020-06-04 13:10 ` Frederic Weisbecker
2020-06-11 1:32 ` Joel Fernandes [this message]
2020-06-11 17:03 ` Paul E. McKenney
2020-06-04 13:14 ` Frederic Weisbecker
2020-05-13 16:47 ` [PATCH 09/10] rcu: Allow to re-offload a CPU that used to be nocb Frederic Weisbecker
2020-05-13 18:41 ` Paul E. McKenney
2020-05-13 16:47 ` [PATCH 10/10] rcu: Nocb (de)activate through sysfs Frederic Weisbecker
2020-05-13 18:42 ` Paul E. McKenney
2020-05-13 23:23 ` Frederic Weisbecker
2020-05-14 15:51 ` Paul E. McKenney
2020-05-13 18:15 ` [PATCH 00/10] rcu: Allow a CPU to leave and reenter NOCB state Paul E. McKenney
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=20200611013203.GA12037@google.com \
--to=joel@joelfernandes.org \
--cc=frederic@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=paulmck@kernel.org \
--cc=rostedt@goodmis.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;
as well as URLs for NNTP newsgroup(s).