Re: [PATCH 2/7] rcu: limit PREEMPT_RCU configurations

From: Paul E. McKenney
Date: Fri Oct 18 2024 - 19:24:33 EST


On Fri, Oct 18, 2024 at 12:18:04PM -0700, Ankur Arora wrote:
>
> Paul E. McKenney <paulmck@xxxxxxxxxx> writes:
>
> > On Thu, Oct 17, 2024 at 03:50:46PM -0700, Ankur Arora wrote:
> >> Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> writes:
> >> > On 2024-10-15 15:13:46 [-0700], Ankur Arora wrote:
> >> >> Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> writes:
> >> >>
> [ ... ]
> >> Sure. But, that's just begging the question.
> >>
> >> We want _NONE and _VOLUNTARY to go away because keeping cond_resched()
> >> around incurs a cost.
> >
> > When you say "go away", do you mean for your use cases? Or globally?
>
> When I say "want _ to go away" I mean: cond_resched() is deleterious
> to performance since you are forced to have code which can do the
> rescheduling check synchronously -- when this could easily be done
> asynchronously (as the non voluntary models do).
>
> And this either means poor performance (ex. in the page zeroing code
> where it would be more optimal to work on continguous ranges) or
> gyrations like the ones that xen_pv_evtchn_do_upcall() and the
> Xen hypervisor have to go through.
>
> And, as we've discussed before, the cond_resched() interface, while it
> works, is not ideal.

I would expect that many instances of cond_resched() could go away given
lazy preemption, but I would not be surprised if there were some that
needed to stay around.

Your thought being that if *all* instance of cond_resched() go away,
then PREEMPT_NONE also goes away? Given how long PREEMPT_NONE has been
around, this would need to be done (and communicated) quite carefully.

> Also, a man can dream!

Fair enough, just be very careful to distinguish dreams from reality. ;-)

Thanx, Paul