Messages in this thread | | | Subject | Re: Spinlocks: Factor our GENERIC_LOCKBREAK in order to avoid spin with irqs disable | From | Peter Zijlstra <> | Date | Thu, 26 Jun 2008 19:48:10 +0200 |
| |
On Thu, 2008-06-26 at 10:02 -0700, Christoph Lameter wrote: > On Thu, 26 Jun 2008, Petr Tesarik wrote: > > > We should probably re-think the whole locking scheme, because spinlocks > > were designed to be held for a short period of time. This was a fair > > assumption when they were introduced, but obviously it is now false in > > many cases (such as virtualization). > > And NUMA. > > > Ticket-based spinlocks have actually already changed the original > > design, so why not implement a generic "lock scheduler" on top of > > spinlock_t and rwlock_t? > > How about making the semaphore / mutex code as fast as spinlocks and just > use that?
Hehe, please have a look at a recent -rt tree and possibly test some of that if you're interested.
It has adaptive spins for rt_mutex. Which is to say, as long as the lock owner is current on its cpu, we'll spin trying to acquire the lock. The reasoning here is that as long as the owner is running, there is a fair chance it'll release the lock soonish.
This is another case where semaphores can never match, due to their lack of ownership.
| |