Locking in the OS Kernel for SMP Systems (4.2.3 Hash-Table Benchmark)

3890阅读 2评论2012-01-03 Heartwork
分类:LINUX

4.2.3 哈希表基准测试
    下面是哈希链表查找的基准测试结果,参与测试的锁有:全局自旋锁,全局读写锁,哈希桶(bucket)专有自旋锁、哈希桶专有读写锁和Linux的大读锁(big reader lock,译注:谁有更好的译名?这个看起来太别扭了)。测试结果很出人意料,尤其对于号称并发性的读写锁,但是也证实了前两节的说法:锁指令的开销阻碍了并行性。

(译注:ideal - 无锁的理想情况,global - 全局自旋锁,globalrw - 全局读写锁,bkt哈希桶专有自旋锁,bktrw - 哈希桶专有读写锁,brlock - 大读锁)
(译注:为什么大读锁的性能比读写锁更好呢?)
    原因很简单,见图9:获取、释放读写锁花费了大量的时间(回忆一下高速缓存行反弹),事实上临界区的代码并没有并行执行(译注:并行性比较差)。

(译注:由于作者没有给出测试代码和本次测试的读写锁实现代码,我们无法判断导致整体性能如此差的原因,但是如果临界区的代码太短的话,读写锁本身的开销可能会导致其性能比自旋锁更差)
上一篇:Locking in the OS Kernel for SMP Systems (4.2.2 Memory Barriers)
下一篇:SGI STL笔记(bitset中模板类的静态成员)

文章评论