Here are the results:
mutex
1 thread real 0m 0.545s user 0m 0.520s sys 0m 0.000s
2 threads real 0m 3.550s user 0m 3.636s sys 0m 3.380s
4 threads real 0m14.357s user 0m11.073s sys 0m40.387s
8 threads real 0m29.686s user 0m19.409s sys 1m34.174s
16 threads real 0m59.138s user 0m38.114s sys 3m17.548s
benaphore
1 thread real 0m 0.318s user 0m 0.316s sys 0m 0.000s
2 threads real 0m 7.124s user 0m 6.332s sys 0m 7.248s
4 threads real 0m19.999s user 0m15.173s sys 0m54.255s
8 threads real 0m41.673s user 0m26.182s sys 2m19.821s
16 threads real 1m17.915s user 0m55.843s sys 4m15.032s
mutex2
1 thread real 0m 0.319s user 0m 0.312s sys 0m 0.004s
2 threads real 0m 0.823s user 0m 0.880s sys 0m 0.724s
4 threads real 0m 2.921s user 0m 3.892s sys 0m 7.612s
8 threads real 0m 4.272s user 0m 4.984s sys 0m11.709s
16 threads real 0m 8.097s user 0m 9.245s sys 0m22.981s
I also ran it with the 3.6 kernel ( http:// kernel. ubuntu. com/~kernel- ppa/mainline/ v3.6-quantal/ ) and just like with 3.4, the performance is about the same, if not worse.
Here are the results:
mutex
1 thread real 0m 0.545s user 0m 0.520s sys 0m 0.000s
2 threads real 0m 3.550s user 0m 3.636s sys 0m 3.380s
4 threads real 0m14.357s user 0m11.073s sys 0m40.387s
8 threads real 0m29.686s user 0m19.409s sys 1m34.174s
16 threads real 0m59.138s user 0m38.114s sys 3m17.548s
benaphore
1 thread real 0m 0.318s user 0m 0.316s sys 0m 0.000s
2 threads real 0m 7.124s user 0m 6.332s sys 0m 7.248s
4 threads real 0m19.999s user 0m15.173s sys 0m54.255s
8 threads real 0m41.673s user 0m26.182s sys 2m19.821s
16 threads real 1m17.915s user 0m55.843s sys 4m15.032s
mutex2
1 thread real 0m 0.319s user 0m 0.312s sys 0m 0.004s
2 threads real 0m 0.823s user 0m 0.880s sys 0m 0.724s
4 threads real 0m 2.921s user 0m 3.892s sys 0m 7.612s
8 threads real 0m 4.272s user 0m 4.984s sys 0m11.709s
16 threads real 0m 8.097s user 0m 9.245s sys 0m22.981s