Re: sched: softlockups in multi_cpu_stop

Jason Low
2015-03-06T19:29:55Z

On Fri, 2015-03-06 at 11:05 -0800, Linus Torvalds wrote:
> On Fri, Mar 6, 2015 at 10:57 AM, Jason Low <jason.low2@hp.com> wrote:
> >
> > Right, the can_spin_on_owner() was originally added to the mutex
> > spinning code for optimization purposes, particularly so that we can
> > avoid adding the spinner to the OSQ only to find that it doesn't need to
> > spin. This function needing to return a correct value should really only
> > affect performance, so yes, lockups due to this seems surprising.
>
> Well, softlockups aren't about "correct behavior". They are about
> certain things not happening in a timely manner.
>
> Clearly the mutex code now tries to hold on to the CPU too aggressively.
>
> At some point people need to admit that busy-looping isn't always a
> good idea. Especially if
>
> (a) we could idle the core instead
>
> (b) the tuning has been done based on som especial-purpose benchmark
> that is likely not realistic
>
> (c) we get reports from people that it causes problems.
>
> In other words: Let's just undo that excessive busy-looping. The
> performance numbers were dubious to begin with. Real scalability comes
> from fixing the locking, not from trying to play games with the locks
> themselves. Particularly games that then cause problems.

Hi Linus,

Agreed, this is an issue we need to address, though we're just trying to
figure out if the change to rwsem_can_spin_on_owner() in "commit:
37e9562453b" is really the one that's causing the issue.

For example, it looks like Ming recently found another change in the
same patchset: commit b3fd4f03ca0b995(locking/rwsem: Avoid deceiving
lock spinners) to be causing lockups.