标签:
杂谈 |
http://events.linuxfoundation.org/sites/events/files/slides/linuxcon-2014-locking-final.pdf
这篇文章在WEIBO上被很多人转了,今天利用早起(前提是孩子没起)的时间学习了一会,简单乱记一下。
最开始一段就是NUMA,俺们码农现在就是要踢翻摩尔定律。你们搞多核我们分析CACHE问题,你搞NUMA我们更加的分析你的CACHE问题。
这篇文章搞的是大家一起来抢锁的高端测试,果然数字难看到爆炸。
然后给出的第一个解决思路既然不同的SOCKET之间的抢CACHE打的厉害,那就每个SOCKET申请一块内存来操作吧,然后就出了一个MCS Locks。
肯定有人问了,要是某些情况每个SOCKET分配一块内存不实用怎么办呢?解决方案就是多读少写,读的多了他们就不打了。
Orig: if (atomic_cmpxchg(&lock->count, 1, 0) == 1)
New: if ((atomic_read(&lock->count) == 1) && (atomic_cmpxchg(&lock->count, 1, 0) == 1))
这是文中给出的例子。
果然这两招是解决CACHE问题的不二招数啊。
后面的部分还有待继续消化。