[parisc-linux] ldcw in __pthread_acquire
Alan Cox
alan@lxorguk.ukuu.org.uk
Mon, 18 Dec 2000 12:06:16 +0000 (GMT)
> I am not sure I understand this thread very well. I would say that going
> syscall() for a mutex lock (ldcw, testset, spinlock, whatever you name it) is
> not a question of cost it is just simply impossible to avoid.
It comes down to probability
A syscall on x86 gives you a 50+ clock overhead at all times
A user mode test and short spin has a 1 or 2 clock overhead if uncontended
You spin for a few clocks in case the contention is SMP and if that works
you win
IFF the lock is contended then you just spent 100 clocks instead of 50
doing a short spin then entering the kernel.
With 1% contention that means you spent 99 times doing 2 clocks, 1 time doing
100, which is a win over 100 times doing 50 clocks.
Since hppa its apparently 2 clocks to the syscall the numbers are apparently
different.