From: Uladzislau Rezki <urezki@gmail.com>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: Uladzislau Rezki <urezki@gmail.com>, RCU <rcu@vger.kernel.org>,
Neeraj upadhyay <Neeraj.Upadhyay@amd.com>,
Boqun Feng <boqun.feng@gmail.com>,
Hillf Danton <hdanton@sina.com>,
Joel Fernandes <joel@joelfernandes.org>,
LKML <linux-kernel@vger.kernel.org>,
Oleksiy Avramchenko <oleksiy.avramchenko@sony.com>,
Frederic Weisbecker <frederic@kernel.org>
Subject: Re: [PATCH v2 1/3] rcu: Reduce synchronize_rcu() latency
Date: Wed, 8 Nov 2023 11:56:25 +0100 [thread overview]
Message-ID: <ZUtpWbUfdesFWvDw@pc636> (raw)
In-Reply-To: <9cd799fd-e4e9-4a24-9e91-0443592b2960@paulmck-laptop>
> >
> > Do you have something that can easily trigger it? I mean some proposal
> > or steps to test. Probably i should try what you wrote, regarding
> > toggling from user space.
> >
> > > I can imagine ways around this, but they are a bit ugly. They end
> > > up being things like recording a timestamp on every sysfs change to
> > > rcu_normal, and then using that timestamp to deduce whether there could
> > > possibly have been sysfs activity on rcu_normal in the meantime.
> > >
> > > It feels like it should be so easy... ;-)
> > >
> > Hmm.. Yes it requires more deep analysis :)
>
> Maybe make that WARN_ONCE() condition also test a separate Kconfig
> option that depends on both DEBUG_KERNEL and RCU_EXPERT?
>
Do you mean to introduce a new Kconfig? For example CONFIG_DEBUG_SRS:
<snip>
config DEBUG_SRS
bool "Provide debugging asserts for normal synchronize_rcu() call"
depends on DEBUG_KERNEL && RCU_EXPERT
help
...
<snip>
> > > > I was thinking about read_lock()/write_lock() since we have many readers
> > > > and only one writer. But i do not really like it either.
> > >
> > > This might be a hint that we should have multiple lists, perhaps one
> > > per CPU. Or lock contention could be used to trigger the transition
> > > from a single list to multiple lists. as is done in SRCU and tasks RCU.
> > >
> > I do not consider to be a sync call as heavily used as other callbacks
> > which require several workers to handle, IMHO. From the other hand my
> > experiments show that to handle 60K-100K by NOCB gives even worse results.
> >
> > >
> > > But I bet that there are several ways to make things work.
> > >
> > Right. The main concern with read_lock()/write_lock() is a PREEMPT_RT
> > kernels where it is a rt-mutex. It would be good to avoid of using any
> > blocking in the gp-kthread since it is a gp driver.
>
> RCU is pretty low-level, so it is OK with a raw spinlock for the list
> manipulation. But only the list manipulation itself. Perhaps you are
> worried about lock contention, but in that case, there is also the issue
> of memory contention for the llist code.
>
I do not consider a lock nor memory contention as an issue here. Whereas
blocking on rt-mutex in the gp-kthread i consider as "not good to go with".
raw-spinlocks are OK, but it is a per-cpu or per-node approach which i tend
to avoid, if not, then probably per-cpu-or-node and merge everything into
one llist to offload by one worker.
--
Uladzislau Rezki
next prev parent reply other threads:[~2023-11-08 10:57 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-30 13:12 [PATCH v2 0/3] reduce latency of normal synchronize_rcu() v2 Uladzislau Rezki (Sony)
2023-10-30 13:12 ` [PATCH v2 1/3] rcu: Reduce synchronize_rcu() latency Uladzislau Rezki (Sony)
2023-11-02 4:35 ` Paul E. McKenney
2023-11-06 12:04 ` Uladzislau Rezki
2023-11-07 5:32 ` Paul E. McKenney
2023-11-07 14:21 ` Uladzislau Rezki
2023-11-07 16:49 ` Paul E. McKenney
2023-11-08 10:56 ` Uladzislau Rezki [this message]
2023-11-08 15:24 ` Paul E. McKenney
2023-11-09 11:36 ` Z qiang
2023-11-09 12:34 ` Uladzislau Rezki
2023-10-30 13:12 ` [PATCH v2 2/3] rcu: Add a trace event for synchronize_rcu_normal() Uladzislau Rezki (Sony)
2023-11-02 4:36 ` Paul E. McKenney
2023-10-30 13:12 ` [PATCH v2 3/3] doc: Add rcutree.rcu_normal_wake_from_gp to kernel-parameters.txt Uladzislau Rezki (Sony)
2023-11-02 4:37 ` 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=ZUtpWbUfdesFWvDw@pc636 \
--to=urezki@gmail.com \
--cc=Neeraj.Upadhyay@amd.com \
--cc=boqun.feng@gmail.com \
--cc=frederic@kernel.org \
--cc=hdanton@sina.com \
--cc=joel@joelfernandes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleksiy.avramchenko@sony.com \
--cc=paulmck@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