Messages in this thread | | | Date | Wed, 24 Jun 2015 06:39:31 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [RFC][PATCH 12/13] stop_machine: Remove lglock |
| |
On Wed, Jun 24, 2015 at 10:42:48AM +0200, Ingo Molnar wrote: > > * Peter Zijlstra <peterz@infradead.org> wrote: > > > On Tue, Jun 23, 2015 at 11:26:26AM -0700, Paul E. McKenney wrote: > > > > > > > > I really think you're making that expedited nonsense far too accessible. > > > > > > This has nothing to do with accessibility and everything to do with > > > robustness. And with me not becoming the triage center for too many non-RCU > > > bugs. > > > > But by making it so you're rewarding abuse instead of flagging it :-( > > Btw., being a 'triage center' is the bane of APIs that are overly successful, > so we should take that burden with pride! :-)
I will gladly accept that compliment.
And the burden. But, lazy as I am, I intend to automate it. ;-)
> Lockdep (and the scheduler APIs as well) frequently got into such situations as > well, and we mostly solved it by being more informative with debug splats. > > I don't think a kernel API should (ever!) stay artificially silent, just for fear > of flagging too many problems in other code.
I agree, as attested by RCU CPU stall warnings, lockdep-RCU, sparse-based RCU checks, and the object-debug-based checks for double call_rcu(). That said, in all of these cases, including your example of lockdep, the diagnostic is a debug splat rather than a mutex-contention meltdown. And it is the mutex-contention meltdown that I will continue making synchronize_sched_expedited() avoid.
But given the change from bulk try_stop_cpus() to either stop_one_cpu() or IPIs, it would not be hard to splat if a given CPU didn't come back fast enough. The latency tracer would of course provide better information, but synchronize_sched_expedited() could do a coarse-grained job with less setup required.
My first guess for the timeout would be something like 500 milliseconds. Thoughts?
Thanx, Paul
| |