On Thu, Dec 18, 2014 at 08:48:24PM -0800, Linus Torvalds wrote: > On Thu, Dec 18, 2014 at 8:03 PM, Dave Jones <da...@redhat.com> wrote: > > > > So the only thing that was on that could cause spinlock overhead > > was DEBUG_SPINLOCK (and LOCK_STAT, though iirc that's not huge either) > > So DEBUG_SPINLOCK does have one big downside if I recall correctly - > the debugging spinlocks are very much not fair. So they don't work > like the real ticket spinlocks. That might have serious effects on the > contention case, with some thread not making any progress due to just > the implementation of the debug spinlocks. > > Peter, Ingo, maybe I'm full of crap on the debug spinlock thing., but > a quick look tells me thay are all built on top of the "trylock" > primitive that does indeed not queue anything, and is thus not fair. > > I'm not sure why the debug spinlocks couldn't just be ticket locks > instead. But there you are - once more, the debug infrastructure is > actually much weaker and inferior to the "real" code.
Yeah, the DEBUG_SPINLOCK stuff is horrible. The trylock loops were designed to 'detect' actual lockups, but this was all done before lockdep. I think one can make an argument to remove the trylock loops and fully rely on lockdep to detect such issues. Only keeping the integrity checks; similar to the mutex debugging stuff. There's a related issue with the trylock loops in that it relies on delay(1) and DVFS heavy (or virt) platforms often have 'dubious' quality delay loops. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/