Re: [PATCH] percpu-refcount: Use normal instead of RCU-sched"

From: Dennis Zhou
Date: Thu Nov 07 2019 - 11:17:55 EST


On Thu, Nov 07, 2019 at 10:13:19AM +0100, Sebastian Andrzej Siewior wrote:
> On 2019-10-02 13:22:53 [+0200], To linux-kernel@xxxxxxxxxxxxxxx wrote:
> > This is a revert of commit
> > a4244454df129 ("percpu-refcount: use RCU-sched insted of normal RCU")
> >
> > which claims the only reason for using RCU-sched is
> > "rcu_read_[un]lock() â are slightly more expensive than preempt_disable/enable()"
> >
> > and
> > "As the RCU critical sections are extremely short, using sched-RCU
> > shouldn't have any latency implications."
> >
> > The problem with using RCU-sched here is that it disables preemption and
> > the callback must not acquire any sleeping locks like spinlock_t on
> > PREEMPT_RT which is the case with some of the users.
> >
> > Using rcu_read_lock() on PREEMPTION=n kernels is not any different
> > compared to rcu_read_lock_sched(). On PREEMPTION=y kernels there are
> > already performance issues due to additional preemption points.
> > Looking at the code, the rcu_read_lock() is just an increment and unlock
> > is almost just a decrement unless there is something special to do. Both
> > are functions while disabling preemption is inlined.
> > Doing a small benchmark, the minimal amount of time required was mostly
> > the same. The average time required was higher due to the higher MAX
> > value (which could be preemption). With DEBUG_PREEMPT=y it is
> > rcu_read_lock_sched() that takes a little longer due to the additional
> > debug code.
> >
> > Convert back to normal RCU.
>
> a gentle ping.
>
> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
> > ---
> >
> > Benchmark https://breakpoint.cc/percpu_test.patch
>
>
> Sebastian

Hello,

I just want to clarify a little bit. Is this patch aimed at fixing an
issue with RT kernels specifically? It'd also be nice to have the
numbers as well as if the kernel was RT or non-RT.

Thanks,
Dennis