Messages in this thread | | | Date | Wed, 8 Sep 2004 14:53:39 +0200 | From | Ingo Molnar <> | Subject | Re: [patch] preempt-smp.patch, 2.6.9-rc1-bk14 |
| |
* Zwane Mwaikambo <zwane@linuxpower.ca> wrote:
> > to solve this problem i've introduced a new spinlock field, > > lock->break_lock, which signals towards the holding CPU that a > > spinlock-break is requested by another CPU. This field is only set if a > > CPU is spinning in a spinlock function [at any locking depth], so the > > default overhead is zero. I've extended cond_resched_lock() to check for > > this flag - in this case we can also save a reschedule. I've added the > > lock_need_resched(lock) and need_lockbreak(lock) methods to check for > > the need to break out of a critical section. > > Doesn't having break_lock within the same cacheline as lock bounce the > line around more?
in fact this way it bounces less than if it were on a separate cacheline. Contention causes bouncing anyway. This way we already have the cacheline dirty and on the local CPU when we set break_lock, which the lockholder CPU bounces back when it breaks the lock and/or releases the lock.
Ingo - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |