Re: [PATCH 6/7] osnoise: handle quiescent states for PREEMPT_RCU=n, PREEMPTION=y

From: Paul E. McKenney
Date: Thu Oct 10 2024 - 10:53:59 EST


On Thu, Oct 10, 2024 at 08:53:38AM +0200, Sebastian Andrzej Siewior wrote:
> On 2024-10-09 09:54:10 [-0700], Ankur Arora wrote:
> > To reduce RCU noise for nohz_full configurations, osnoise depends
> > on cond_resched() providing quiescent states for PREEMPT_RCU=n
> > configurations. And, for PREEMPT_RCU=y configurations does this
> > by directly calling rcu_momentary_eqs().
> >
> > With PREEMPT_LAZY=y, however, we can have configurations with
> > (PREEMPTION=y, PREEMPT_RCU=n), which means neither of the above
> > can help.
>
> PREEMPTION=y, PREEMPT_RCU=n should not be possible.

PREEMPT_LAZY=y, PREEMPT_RCU=n really does need to be possible in order to
avoid OOM on systems not abundantly endowed with memory. This gets the
improvement in tail latencies from PREEMPT_LAZY but the OOM resistance
of PREEMPT_RCU=n. Such systems really do not want to be preempting
RCU readers.

Thanx, Paul

> > Handle that by fallback to the explicit quiescent states via
> > rcu_momentary_eqs().
>
> Sebastian