tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: New diagnostic routine - mutex_ownable()



On Mon, May 01, 2017 at 07:39:55AM +0800, Paul Goyette wrote:
> > > As for penalty, it should be very low.  The expectation is that there
> > > would be no contention for the lock, so no waiting for mutex_enter() to
> > > finish.  Just the cost of taking and releasing the mutex.
> > 
> > Actually, this can be a high penalty under contention when we could
> > have taken a no-lock fast path.
> > 
> > Specifically, any atomic operation, including mutex_enter, requires
> > the CPU to send a message to every other CPU on the system bus and
> > wait for all the answers to come back.  mutex_enter further must wait
> > for any active critical section on another CPU to complete.  This is
> > what a no-lock fast path is supposed to avoid.
> > 
> > Hence I suggest that mutex_ownable be limited to KDASSERT -- so that
> > you get it only if you combine DEBUG (expensive consistency checks)
> > and LOCKDEBUG (locking bug detection).
> 
> Yes, I agree. I've already made the KDASSERT() change in my local sources.

this is still much more expensive than necessary.
it would be easy to add a new lockdebug interface to perform this check
rather than using mutex_enter() to get the recursion-check part of
lockdebug_wantlock() as a side-effect, so please do that.

even when using expensive checks, it's best not to make them
more expensive than is really necessary.

-Chuck


Home | Main Index | Thread Index | Old Index