Re: sched: softlockups in multi_cpu_stop

Linus Torvalds
2015-03-06T19:05:33Z

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.

Linus