高性能服务系列【二】CPU和内存

本文探讨了现代计算机系统架构中的关键组件,如双路处理器、物理核与逻辑核的区别,以及高速缓存、内存管理和多核协作对性能的影响,包括I/O、线程切换、内存屏障和缓存一致性问题。
摘要由CSDN通过智能技术生成

现代计算机的系统架构十分复杂。在服务器中,双路处理器已经十分常见。最近Arm处理器实现双路共384核心,要知道目前Linux内核最高只支持256核,这就有点尴尬。

多路处理器将越来越普遍,对性能的影响和传统架构有不小的差别,这个议题放到后面再讨论。首先需要厘清几个概念,在计算机的主板上,有几个CPU插座,就是挂载几颗CPU,通常是Socket插槽。还有H插槽式的,主要在笔记本等小型设备。而每颗CPU可以集成很多核,又叫Core,这里Core说的是物理Core。每个物理Core又能够支持两个逻辑核。所以和CPU相关的概念至少有三个:1、处理器,是指插在主板插槽那个芯片。双路处理器是指两颗芯片。2、物理核,是在芯片中真正集成的,光刻机实打实刻出来。3、逻辑核,通过超线程技术,在物理核基础上模拟出来。这三个概念会在下面内容中,会有严格的区分。在操作系统命令中,主要看到的是逻辑核,不太关注到物理核和多路处理器。

虽然传统架构相对简单,但和现代架构要解决的问题却是一样的。我们以传统的单处理器为例,主板上搭载北桥芯片和南桥芯片。北桥芯片主要负责高速连接,通过内存控制器,连接内存和显卡。CPU通过前端总线FSB和北桥芯片读写内存和显卡。南桥芯片主要负责低速连接,如I/O接口,包括网卡和磁盘,还有键盘鼠标等。这里要画个重点,北桥芯片和南桥芯片的作用,这个很容易被忽略。

先声明下,逻辑核在高速缓存上如何共享,我没有专门研究过,可能会有所不同。在物理核上,主要有L1和L2高速缓存,L3高速缓存目前是片内共享的,即整个CPU内部共享的。更早之前,L2和L3是集成在主板上。L1高速缓存被拆分成L1d和L1i,即数据缓存和指令缓存。

说完前面的基础资料后,我们来看下一个指令执行时的延迟是什么情况。

1、如果数据在寄存器中,1个cycle。

2、如果数据在高速缓存中,3-20个cycle。

3、如果数据在主存中,则需要通过FSB,向北桥芯片的内存控制器发起读取指令,240个cycle。

上述的3个值不是精准的值,但数量级差不多。

说完以上内容,就很容易理解几个场景下,这些硬件如何影响到性能,以及影响程度有多大。

1、等待I/O,通过低速南桥芯片读写数据,对延迟影响无需赘述。

2、线程切换,线程的上下文被回写到主存,再次被调度时,至少要面对几个性能惩罚,缓存缺失,逻辑核漂移。

对于这个问题的解决,多数会采用CPU亲和的解决方案。这里有个坑,并不是相邻的逻辑核就是在一起。

3、原子操作和内存屏障,这个问题和缓存一致性协议是一起的。多核在同时读写一块内存时,都要考虑这个问题。

但我们在前面说过,L3缓存是片内共享,所以在单路处理器系统中,基本在L3缓存就解决了。包括目前由disruptor引起很火的伪共享问题,并没有所说的,对性能有那么大的影响。

4、缓存行和巨页问题,这是作为基础知识就好了。主要体现在内存管理这块。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值