Acquiring a lock on the same CPU that holds it - what can be done?
    Andriy Gapon 
    avg at FreeBSD.org
       
    Wed Jan  8 16:31:29 UTC 2014
    
    
  
I am sure that the following approach was suggested before, but I can not find
any references now.
So, the idea is to auto-associate a priority with a lock.  Every time a priority
lending would kick in we would record the priority in the lock.  The next time a
thread with a lower priority acquires that lock we would automatically boost the
thread to the recorded priority until it releases the lock.  This should prevent
the situation that you've described where a higher priority thread preempts a
lower priority thread just to discover that it holds a required lock and
priority lending is required before relinquishing a CPU to the preempted thread.
I am sure that there could be downsides to this approach.
-- 
Andriy Gapon
    
    
More information about the freebsd-arch
mailing list