本文转载自微信公众号《后端技术罗盘》,作者程序员大白。转载本文请联系后台技术指南针公众号。今天和大家聊一聊——服务器多处理器架构。在查阅相关资料的过程中,发现这是一个很容易被喷的话题,搞得我很慌。本文不会从逻辑电路、芯片设计、cpu历史等角度进行讲解,水平有限,实战为先。通过本文,您将了解以下内容:物理核心和逻辑核心多处理器架构:SMP、NUMA、MPP1。物理核心与逻辑核心说到CPU,大家首先想到的可能是这样的:图1Intel代号CooperLake的XeonPlatinum9200处理器。该系列CPU的物理封装尺寸为长宽76.0×72.5毫米,是目前英特尔历史上最大的。处理器,CPU内部是什么样子的?CPU内部封装了一个或多个物理内核。物理核心具有独立的各级缓存和电路结构。如果只有一个物理核心,那就是单核CPU。有多个一个物理核心就是一个多核CPU。图24核CPU内部结构图对于相同处理器规格的服务器,物理核心总数的计算方法为:物理核心数=CPU总数*单CPU物理核心数图3多CPU和多物理内核的简化图Hyper-Threading是Intel于2002年发布的一项技术,全称Hyper-Threading,缩写为HT技术。主流、业界对HT的评价不一,但官方并没有放弃超线程技术。简单来说,HT技术可以让处理器中的一个物理内核像两个物理内核一样工作,从而提高系统的整体性能,但肯定不能真的像两个物理内核那样,否则就违反了物理定律,就意味着在某些技术的帮助下,可以更好地利用物理内核的性能。对于相同处理器规格的服务器,总逻辑核心数的计算方法为:开启HT:逻辑核心数=CPU总数*单CPU物理核心数*2关闭HT:逻辑核心数=物理核心数=CPU总数*单个CPU的物理核心数。掌握了CPU、物理核心和逻辑核心的关系后,就可以找台服务器查看相关配置,试一试了。图4CPU&PhysicalCore&LogicalCoreDiagram2.多处理器架构当CPU过多时,需要考虑如何设计,于是出现了几种不同的多处理器架构。目前服务器大致可以分为三类:对称多处理器结构SMP非统一存储访问结构NUMA海量并行处理结构MPP对我们来说应该多用SMP和NUMA,少接触MPP。2.1SMP对称多处理器结构SMP是SymmetricMulti-Processor的缩写。对称多处理器结构是指多个CPU对称且平等,共享相同的物理内存/IO等资源,所以SMP结构属于一致内存访问结构UMA。图5SMPArchitectureSchematicDiagram在共享模式下,所有CPU均等使用资源。模式简单,CPU数量少时效率很好,但优势也可能成为障碍。想象一个场景,我们为了提高SMP模式下服务器的处理能力,横向扩展CPU的数量,这些CPU通过同一条总线访问内存。随着CPU数量的增加,同一内存地址的访问冲突会明显增加,间接造成CPU资源的浪费。相关实验证明,一个SMP服务器最好的情况是2-4个CPU。图6SMPexpansion-efficiencycurve2.2NUMAnon-uniformmemoryaccessstructure上面提到的SMP架构是uniformmemoryaccessstructureUMA,还有Non-UniformMemoryAccessarchitecture,所以NUMA结构和SMP的区别很明显架构是对等内存访问是否一致。NUMA架构的服务器有多个CPU模块,每个CPU模块由多个CPU组成。每个CPU模块都有独立的本地内存、I/O和其他资源。CPU模块可以称为节点。图7NUMA架构CPU模块内部结构节点可以通过互连模块交换数据,所以每个CPU模块仍然可以访问整个系统的内存,但此时内存分为本地和外部,访问速度自然就慢了.不一样。访问CPU模块的本地内存将比访问其他CPU模块的内存快得多。在明确了这种架构带来的内存访问差异之后,我们在实际开发应用程序时需要尽量减少不同CPU模块之间的信息交互。图8整体NUMA架构图NUMA技术也有缺陷,因为访问远程内存的延迟比本地内存长很多,当CPU数量增加时,系统性能不能线性增加,换句话说,CPU数量翻倍CPU无法获得1倍的性能提升,因此仍然存在缩放限制区域。2.3MPPMassiveParallelProcessing结构MPP是MassiveParallelProcessing的缩写。MPP是另一种系统扩展方式。它由多个SMP服务器通过一定的节点互连网络连接起来,完成同一个任务。横向可以看成一个SMPScale。在MPP结构中,多个SMP服务器是一个完全共享(ShareNothing)的结构,因此扩展能力最好。典型的刀片服务器是刀片服务器。有文章说MPP架构和MapReduce模式很像。多个SMP服务器节点通过Internet实现,目前没有统一的数据通信协议,这部分交互协议用户是无法感知的。MPP架构有点像刀片服务器。每个切片都是独立的,切片之间通过特定的协议直接交互。图9MPP架构图3总结本文内容不多,先阐述一些关于CPU&物理核心&逻辑核心的常识,然后针对多处理器服务器的三种常见架构,每种架构都有不同的具体和使用场景,推荐关注NUMA,可惜本文没有过多展开。
