试想一下,如果一台高性能服务器有4个CPU,64g内存,以及总线、IO等一些资源,这些资源在服务器内部是如何安排的?


本文将不从逻辑电路、芯片设计、cpu历史等角度进行阐述。水平有限,实战为先。通过本文,您将了解以下内容:


物理核心逻辑核心。


多处理器架构:SMP,NUMA,MPP。


1.物理核心和逻辑核心。


说到CPU,首先想到的可能是这样的:


该系列CPU的物理封装长宽高分别为76.0 和72.5 mm,也是目前英特尔历史上最大的处理器。CPU里面是什么?


CPU内部封装了一个或多个物理内核,这些物理内核在各级都有独立的缓存和电路结构。只有一个物理核是单核CPU,几个物理核是多核CPU。


物理内核的总数计算如下:


物理内核数量=总CPU  *单个CPU中的物理内核数量。


超线是英特尔在2002年发布的一项技术,它的全称是超线程。简将其称为超线程技术。起初,超线技术仅应用于至强处理器,后来逐渐应用于奔腾处理器,该技术成为主流。业界对HT有不同意见,但官方并没有放弃超线程技术。


简单来说,HT技术可以让一个处理器中的一个物理核扮演两个物理核同样的角色,从而提升系统的整体性能。但是肯定不会真的像两个物理核,或者违反物理定律,只是说一个物理核借助一些技术性能会更好。


对于处理器规格一致的服务器,逻辑内核总数的计算方法如下:


Open  HT:逻辑内核=物理内核=总CPU  *单个CPU中的物理内核*2。


HT:的逻辑核心未开启=物理核心=总CPU  *单个CPU中的物理核心。


掌握了CPU的物理核和逻辑核之间的关系之后,可以找个服务器看看相关的配置,试一试。


2.多处理器体系结构


当CPU比较多的时候,我们需要考虑如何设计,所以有几种不同的多处理器架构。目前,服务器大致可以分为三类:


对称多处理器体系结构


非统一存储访问结构NUMA。


海量并行处理架构MPP。


对我们来说,SMP和NUMA应该多接触,MPP应该少接触。


2.1 SMP对称多处理器架构。


SMP是对称多处理器的缩写。


对称多处理器架构意味着多个CPU是对称且相等的,共享相同的物理内存/IO等资源,因此SMP架构属于UMA。


共享模式下,所有CPU平等使用资源,模式简单。当CPU数量少的时候,效率很好,但优势可能成为障碍。


想象一个场景,在SMP模式下,为了提高服务器的处理能力,我们横向扩展了CPU的数量,这些CPU通过同一条总线访问内存。


随着CPU数量的增加,同一内存地址的访问冲突会明显增加,间接造成CPU资源的浪费。相关实验表明,SMP服务器的最佳情况是2-4个CPU。


2.2 NUMA非统一存储访问结构。


前面提到的SMP架构是统一内存访问架构UMA,是相对非统一的内存访问架构,所以NUMA架构和SMP架构的显著区别在于是否是统一的、对等的内存访问。


基于NUMA架构的服务器有多个中央处理器模块,每个模块由多个中央处理器组成,每个中央处理器模块有独立的本地内存、输入输出等资源,可以称为节点。


节点之间可以通过互联的模块进行交互,所以每个CPU模块仍然可以访问整个系统的内存。但此时内存分为本地和外部,访问速度自然不同。


访问CPU模块的本地内存将比访问其他CPU模块的内存快得多。在明确了这种架构带来的内存访问差异后,我们在开发应用时需要尽量减少不同CPU模块之间的信息交互。


NUMA技术也有缺陷,因为访问远程内存的延迟远远超过本地内存,当CPU数量增加时,系统性能无法线性提升,换句话说,CPU数量翻倍也无法实现性能翻倍提升,所以仍然存在扩展限制区域。2.3 MPP海量并行处理结构。


MPP是海量并行处理的缩写。MPP是系统扩展的另一种方式。它由多个SMP服务器通过某个节点互联网络连接起来完成同一任务,可以看作是SMP的横向扩展。


在MPP结构中,多台SMP服务器完全是Share  Nothing)结构,所以扩展性最好,典型的就是刀片服务器。有文章说MPP架构和MapReduce模式很像,通过互联网实现多个SMP服务器节点。目前没有统一的数据通信协议,这种交互协议对用户不敏感。


MPP架构有点像刀片服务器,每一块都是独立的,各块之间通过特定的协议直接交互。


上一篇:服务器端编程语言报告出炉,PHP 独占鳌头多年 下一篇:和苹果官司胜诉后 Corellium宣布向个人用户开放iPhone/iPad虚拟化
框架系统   粤ICP备13024006号
框架系统   粤ICP备13024006号