Re: [PATCH RFC tip/core/rcu 14/14] rcu/nohz: Make multi_cpu_stop() enable tick on all online CPUs

From: Paul E. McKenney
Date: Mon Aug 05 2019 - 10:49:03 EST


On Mon, Aug 05, 2019 at 10:07:36AM +0200, Peter Zijlstra wrote:
> On Sun, Aug 04, 2019 at 09:19:01PM -0700, Paul E. McKenney wrote:
> > On Sun, Aug 04, 2019 at 01:24:46PM -0700, Paul E. McKenney wrote:
>
> > > For whatever it is worth, the things on my list include using 25 rounds
> > > of resched_cpu() on each CPU with ten-jiffy wait between each (instead of
> > > merely 10 rounds), using waitqueues or some such to actually force a
> > > meaningful context switch on the other CPUs, etc.
>
> That really should not be needed. What are those other CPUs doing?

Excellent question. It would be really nice to have a CPU-stopper stall
warning, wouldn't it? But who knows? Maybe I am the only one to have
run into this. However, the comment in multi_cpu_stop() just before
the call to touch_nmi_watchdog() leads me to believe otherwise. ;-)

> > Which appears to have reduced the bug rate by about a factor of two.
> > (But statistics and all that.)
>
> Which is just weird..

Indeed. Your point being?

> > I am now trying the same test, but with CONFIG_PREEMPT=y and without
> > quite so much hammering on the scheduler. This is keying off Peter's
> > earlier mention of preemption. If this turns out to be solid, perhaps
> > we outlaw CONFIG_PREEMPT=n && CONFIG_NO_HZ_FULL=y?
>
> CONFIG_PREEMPT=n should work just fine, _something_ is off.

Thank you, that is what I needed to know.

Thanx, Paul