建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
温馨提示

抱歉,您需设置社区昵称后才能参与社区互动!

前往修改
我再想想

【视频笔记】 2.NUMA架构下的软件性能挑战

2020/7/10 1027

## 1. CPU与Memory


> CPU就像一个高速公路,不停的Memory中加载数据,计算数据,再写回Memory,数据读取和写回的速度,是制约系统的一个关键因素


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094729zewwzh9cl35fjn4v.png)



- **左边从上到下**


1. CPU

2. Cache(高速缓冲存储器)

3. Memory(内存)

4. SCM(非记忆存储)

5. SSD(固态硬盘)

6. HDD(硬盘)




- **右边从上到下**


> 对左边的总结




## 2. 处理器的性能和功能墙


> 随着CPU的发展功率也在不断的上升


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094822j3tykvqmtpvhswhq.png)



- **为什么发展到后期功率一直徘徊在那里?**


> 随着芯片上晶体管的密度越来越高,制程工艺越来越小,晶体管中的绝缘层也将越来越薄,导致漏电增加,功耗上升。


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094835zyee4gfonikpjmyx.png)



- 红色:绝缘层


- 弥补漏电办法:增加电压,产生更大功率

- 功率上升,热量变大,提升更好的散热。


**原因**


1. 散热技术

2. 技术问题




## 3. 从单核到SMP


> SMP(Symmetric multiprocessing system)对处理器系统中,所有的核均通过总内存。每一个进程都可以被分配到任何一个核上运行,达到很好的负载均衡。


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094848ytrkuvg6dobnhbch.png)





## 4. 从SMP到NUMA


> 在SMP系统中,核数的扩展受到内存总线的限制。非同一内存访问架构(Non-uniform memory access)很好的解决了这以问题


促进升级的原因:无法大型的扩张


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/0949022tgjgxk17mhmtmsv.png)



### 4.1 NUMA架构的特点


> 内存在物理上是分布式的,不同的核访问不同内存的时间不同,因此有了Node和Distance


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094918aidsvo0fzedyfveg.png)





### 4.2 CPU亲和性


> 让进程在给定的Core上尽可能长时间的运行,而不被迁移到其他的倾向性


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094928lxm7huuxt2wicqzy.png)



### 4.3 NUMA资源规划


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094944nloctruwuoa804cu.png)





### 4.4 NUMA配置方法


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094956xkjqutnbg5voz9sd.png)



**例:Nginx绑核优化**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095007sjg0ptysektmsbac.png)





## 5. 新的挑战-锁


### 5.1 锁的模型


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095016g4yccvctoc49jard.png)



#### 锁性能优化(一)


- **无锁编程**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095024g2dfpav9mifkwxo9.png)



- **大锁变小锁**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095031tuyouzhe2312apfw.png)



#### 锁性能的优化(二)


- **使用GCC自带的原子操作**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095044821tg1w3gddudgkn.png)



- **使用再带内存屏蔽的指令**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/0950552eomhugroryqjcgo.png)



#### 锁性能优化(三)


- **调整现成数达到最佳并发效果**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095105k8gf5prnl62esdoc.png)



- **避免Cache line伪共享**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094600mcakn3ry3r1yfjio.png)



## **小结**


1. NUMA是非同一的内存访问架构,不同NUMA节点间的内存访问时间不同。

2. 减少跨NUMA内存copy将大幅提升性能,不要忘记网卡中断的内存copy。

3. 减少锁的使用、减少锁的互斥范围,提升系统中的并行比例,可以充分利用多核的并发。

4. 使用GCC自带原子操作、使用自带内存屏障的指令也会对性能有很大帮助。

5. 适当并发数,让系统在并发和线程切换开销找到很好的平衡点。

6. 主义锁数据结构的“伪共享”,避免伪共享带来的性能下降。


回复 (0)

没有评论
上划加载中
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

角色:校园大使

话题:46

发消息
发表于2020年07月10日 09:54:23 10270
直达本楼层的链接
楼主
倒序浏览 只看该作者
【视频笔记】 2.NUMA架构下的软件性能挑战

## 1. CPU与Memory


> CPU就像一个高速公路,不停的Memory中加载数据,计算数据,再写回Memory,数据读取和写回的速度,是制约系统的一个关键因素


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094729zewwzh9cl35fjn4v.png)



- **左边从上到下**


1. CPU

2. Cache(高速缓冲存储器)

3. Memory(内存)

4. SCM(非记忆存储)

5. SSD(固态硬盘)

6. HDD(硬盘)




- **右边从上到下**


> 对左边的总结




## 2. 处理器的性能和功能墙


> 随着CPU的发展功率也在不断的上升


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094822j3tykvqmtpvhswhq.png)



- **为什么发展到后期功率一直徘徊在那里?**


> 随着芯片上晶体管的密度越来越高,制程工艺越来越小,晶体管中的绝缘层也将越来越薄,导致漏电增加,功耗上升。


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094835zyee4gfonikpjmyx.png)



- 红色:绝缘层


- 弥补漏电办法:增加电压,产生更大功率

- 功率上升,热量变大,提升更好的散热。


**原因**


1. 散热技术

2. 技术问题




## 3. 从单核到SMP


> SMP(Symmetric multiprocessing system)对处理器系统中,所有的核均通过总内存。每一个进程都可以被分配到任何一个核上运行,达到很好的负载均衡。


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094848ytrkuvg6dobnhbch.png)





## 4. 从SMP到NUMA


> 在SMP系统中,核数的扩展受到内存总线的限制。非同一内存访问架构(Non-uniform memory access)很好的解决了这以问题


促进升级的原因:无法大型的扩张


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/0949022tgjgxk17mhmtmsv.png)



### 4.1 NUMA架构的特点


> 内存在物理上是分布式的,不同的核访问不同内存的时间不同,因此有了Node和Distance


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094918aidsvo0fzedyfveg.png)





### 4.2 CPU亲和性


> 让进程在给定的Core上尽可能长时间的运行,而不被迁移到其他的倾向性


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094928lxm7huuxt2wicqzy.png)



### 4.3 NUMA资源规划


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094944nloctruwuoa804cu.png)





### 4.4 NUMA配置方法


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094956xkjqutnbg5voz9sd.png)



**例:Nginx绑核优化**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095007sjg0ptysektmsbac.png)





## 5. 新的挑战-锁


### 5.1 锁的模型


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095016g4yccvctoc49jard.png)



#### 锁性能优化(一)


- **无锁编程**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095024g2dfpav9mifkwxo9.png)



- **大锁变小锁**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095031tuyouzhe2312apfw.png)



#### 锁性能的优化(二)


- **使用GCC自带的原子操作**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095044821tg1w3gddudgkn.png)



- **使用再带内存屏蔽的指令**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/0950552eomhugroryqjcgo.png)



#### 锁性能优化(三)


- **调整现成数达到最佳并发效果**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/095105k8gf5prnl62esdoc.png)



- **避免Cache line伪共享**


![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/094600mcakn3ry3r1yfjio.png)



## **小结**


1. NUMA是非同一的内存访问架构,不同NUMA节点间的内存访问时间不同。

2. 减少跨NUMA内存copy将大幅提升性能,不要忘记网卡中断的内存copy。

3. 减少锁的使用、减少锁的互斥范围,提升系统中的并行比例,可以充分利用多核的并发。

4. 使用GCC自带原子操作、使用自带内存屏障的指令也会对性能有很大帮助。

5. 适当并发数,让系统在并发和线程切换开销找到很好的平衡点。

6. 主义锁数据结构的“伪共享”,避免伪共享带来的性能下降。


点赞 举报
分享

分享文章到朋友圈

分享文章到微博

游客

您需要登录后才可以回帖 登录 | 立即注册