- 论坛徽章:
- 0
|
本帖最后由 l4rmbr 于 2014-03-31 17:12 编辑
随着NUMA架构的发展,越来越大的SMP系统成为现实。
很多内核中深埋的伸缩性问题开始显露,内核开发者也越来越注重对于
伸缩性问题的考虑。
所谓伸缩性(scalability),是指内核的性能随着CPU核心/内存数目等资源的增大而出现回退的现象。
假设资源数目是N, 很多暴露出来的伸缩性问题都是O(N)乃至O(N^2)复杂度的。
当然最理想是O(1)复杂度,即随着N增大,性能保持在一个数量级的变化之内。
引起变化的原因有两方面,一是空间,一是时间。
空间方面,比如增多的内存大小,使某些数据结构消耗也随着增大,进而占据
了固定的宝贵的低端内存(对32位来说),从而使低端内存数量减少,而引起其它重要
内核结构分配减缓甚至失败,进而影响性能。比如描述页框的struct page就是这种情况。
时间方面,比如增多的CPU核心加剧了对全局有限资源的竞争,如锁,从而造成性能的回退。
今天看到的关于对hugetlb页,使用独立的页表锁就是这种情况。http://lwn.net/Articles/568076/
因此想开个贴,把遇到的所有跟伸缩性(scalability)相关的问题/patch/文章等放进来,供大家
讨论和参考。我之后想起来会慢慢补充。大家也可以踊跃讨论哈
=====
文章
hugetlb页使用独立的页表锁,以解决锁竞争
关于内存屏障,rcu, 无锁的伸缩性问题 |
|