Hi, I was expecting for a contended lock, spin lock to be at
least as efficient as adaptive mutex. However a simple test program
seems to indicate quite a big difference:
atom$ gcc -O2 lock_test.c -DMUTEX_LOCK -lpthread
atom$ time ./a.out
4.54 real 16.76 user 0.00 sys
atom$ gcc -O2 lock_test.c -DSPIN_LOCK -lpthread
atom$ time ./a.out
14.04 real 51.83 user 0.00 sys
Any idea why pthreads spin lock is 3 times slower compared to pthreads
mutex?
PS. Some info about my hardware:
atom$ cpuctl list
Num HwId Unbound LWPs Interrupts Last change #Intr
---- ---- ------------ ---------- ------------------------ -----
0 0 online intr Sun Oct 30 08:05:54 2011 13
1 2 online intr Sun Oct 30 08:05:54 2011 0
2 1 online intr Sun Oct 30 08:05:54 2011 0
3 3 online intr Sun Oct 30 08:05:54 2011 0
atom$ cpuctl identify 0
Cannot bind to target CPU. Output may not accurately describe the
target. Run as root to allow binding.
cpu0: Intel Atom (686-class), 1666.74 MHz, id 0x106ca
cpu0: features
0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR> cpu0:
features 0xbfebfbff<PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR>
cpu0: features 0xbfebfbff<SSE,SSE2,SS,HTT,TM,SBF> cpu0: features2
0x40e31d<SSE3,DTES64,MONITOR,DS-CPL,TM2,SSSE3,CX16,xTPR> cpu0:
features2 0x40e31d<PDCM,MOVBE> cpu0: features3
0x20100800<SYSCALL/SYSRET,XD,EM64T> cpu0: features4 0x1<LAHF>
cpu0: "Intel(R) Atom(TM) CPU D510 @ 1.66GHz"
cpu0: I-cache 32KB 64B/line 8-way
cpu0: Initial APIC ID 0
cpu0: Cluster/Package ID 0
cpu0: Core ID 0
cpu0: SMT ID 0
cpu0: family 06 model 0c extfamily 00 extmodel 01
Attachment:
lock_test.c
Description: Binary data