Messages in this thread | | | Subject | Re: [PATCH v2 3/6] sched: make double-lock-balance fair | From | Peter Zijlstra <> | Date | Wed, 27 Aug 2008 12:41:08 +0200 |
| |
On Wed, 2008-08-27 at 12:26 +0200, Nick Piggin wrote: > On Wed, Aug 27, 2008 at 10:21:35AM +0200, Peter Zijlstra wrote:
> > I suppose one could then write it like: > > > > if (spin_is_contended(&this_rq->lock) || !spin_trylock(&busiest->lock)) { > > spin_unlock(&this_rq->lock); > > double_rq_lock(this_rq, busiest); > > } > > > > But, I'm not sure that's worth the effort at that point.. > > Yeah, that could work, but hmm it might cause 2 cache coherency transactions > anyway even in the fastpath, so it might even be slower than just unlocking > unconditionally and taking both locks :(
right,..
> > Anyway - I think all this is utterly defeated on CONFIG_PREEMPT by the > > spin with IRQs enabled logic in kernel/spinlock.c. > > > > Making this an -rt only patch... > > Hmm, and also on x86 with ticket locks we don't spin with preempt or > interrupts enabled any more (although we still do of course on other > architectures)
Aah, we don't do CONFIG_GENERIC_LOCKBREAK anymore?
Does it make sense to make this _double_lock_balance() thing depend on that too?
| |