11.性能与可伸缩性

目录

 

1Amdahl定律

1.1示例:在各种框架中隐藏的串行部分

1.2Amdahl定律的应用

2线程引入的开销

2.1上下文切换

2.2内存同步

 2.3阻塞

3减少锁的竞争

3.1缩小锁的范围

3.2减少锁的粒度

3.3锁分段

3.4一些替代独占锁的方法​

3.5向对象池说“不”

4比较Map的性能

总结


1Amdahl定律

并行计算中的加速比是用并行前的执行速度和并行后的执行速度之比来表示的,它表示了在并行化之后的效率提升情况。

阿姆达尔定律固定负载(计算总量不变时)时的量化标准。可用公式:

\frac{W_s + W_p}{W_s + \frac{W_p}{p}}来表示。

式中W_s, W_p分别表示问题规模的串行分量(问题中不能并行化的那一部分)和并行分量,p表示处理器数量。

只要注意到当p\to \infty时,上式的极限是\frac{W}{W_s},其中,{W}={W_s}+{W_p}。这意味着无论我们如何增大处理器数目,加速比是无法高于这个数的。

1.1示例:在各种框架中隐藏的串行部分

1.2Amdahl定律的应用

 

2线程引入的开销

2.1上下文切换

vmstat

2.2内存同步

 

 

 2.3阻塞

 

 

3减少锁的竞争

3.1缩小锁的范围

3.2减少锁的粒度

3.3锁分段

3.4一些替代独占锁的方法

原子类使用CAS操作

3.5向对象池说“不”

 

4比较Map的性能

 

总结