多 CPU 处理架构
简介
多 cpu 系统架构上大概分为三种:
- SMP(Symmetric Multi Processing): 对称多处理器,所有 cpu 都是对等的, 一起共享全部资源,如总线,内存和 I/O 系统等;
- NUMA(Non-Uniform Memory Access): 非均匀访问存储模型,
- MMP(Massive Parallel Processing): 大规模并行处理系统,由多个 SMP 服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统;
SMP
SMP 架构
所谓对称多处理器结构,是指服务器中多个 CPU 对称工作,无主次或从属关系。各 CPU 共享相同的物理内存,每个 CPU 访问内存中的任何地址所需时间是相同的,因此 SMP 也被称为一致存储器访问结构 (UMA : Uniform Memory Access) 。对 SMP 服务器进行扩展的方式包括增加内存、使用更快的 CPU 、增加 CPU 、扩充 I/O( 槽口数与总线数 ) 以及添加更多的外部设备 ( 通常是磁盘存储 ) 。
SMP 服务器的主要特征是共享,系统中所有资源 (CPU 、内存、 I/O 等 ) 都是共享的。也正是由于这种特征,导致了 SMP 服务器的主要问题,那就是它的扩展能力非常有限。对于 SMP 服务器而言,每一个共享的环节都可能造成 SMP 服务器扩展时的瓶颈,而最受限制的则是内存。由于每个 CPU 必须通过相同的内存总线访问相同的内存资源,因此随着 CPU 数量的增加,内存访问冲突将迅速增加,最终会造成 CPU 资源的浪费,使 CPU 性能的有效性大大降低。实验证明, SMP 服务器 CPU 利用率最好的情况是 2 至 4 个 CPU 。
NUMA
非统一内存访问架构(英语:Non-uniform memory access,简称 NUMA)是一种为多处理器的电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在 NUMA 下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。
是为了解决 smp 扩容性而提出的技术方案,smp 相当于多个 cpu 连接一个内存池导致请求经常发生冲突
- NUMA 由多个 Node 组成;
- 每个 Node 包含多个 CPU( 如 4 个 ) ,并且具有独立的本地内存、 I/O 槽口等。
- 各 Node 之间可以通过互联模块 ( 如称为 Crossbar Switch) 进行连接和信息交互, 每个 CPU 可以访问整个系统的内存 ( 这是 NUMA 系统与 MPP 系统的重要差别 ) 。但访问本地内存的速度将远远高于访问远地内存 ( 系统内其它节点的内存 ) 的速度,这也是非一致存储访问 NUMA 的由来
MMP
和 NUMA 不同, MPP 提供了另外一种进行系统扩展的方式,它由多个 SMP 服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个 SMP 服务器 ( 每个 SMP 服务器称节点 ) 通过节点互联网络连接而成,每个节点只访问自己的本地资源 ( 内存、存储等 ) ,是一种完全无共享 (Share Nothing) 结构,因而扩展能力最好,理论上其扩展无限制,目前的技术可实现 512 个节点互联,数千个 CPU 。
MPP 的优势
MPP 系统不共享资源,因此对它而言,资源比 SMP 要多,当需要处理的事务达到一定规模时,MPP 的效率要比 SMP 好。由于 MPP 系统因为要在不同处理单元之间传送信息,在通讯时间少的时候,那 MPP 系统可以充分发挥资源的优势,达到高效率。也就是说:操作相互之间没有什么关系,处理单元之间需要进行的通信比较少,那采用 MPP 系统就要好。因此,**MPP****系统在决策支持和数据挖掘方面显示了优势。**
SMP 的优势
MPP 系统因为要在不同处理单元之间传送信息,所以它的效率要比 SMP 要差一点。在通讯时间多的时候,那 MPP 系统可以充分发挥资源的优势。当前使用的 OTLP 程序中,用户访问一个中心数据库,如果采用 SMP 系统结构,它的效率要比采用MPP结构要快得多。
NUMA 的优势
NUMA 架构来看,它可以在一个物理服务器内集成许多 CPU,使系统具有较高的事务处理能力,由于远地内存访问时延远长于本地内存访问,因此需要尽量减少不同 CPU 模块之间的数据交互。显然,NUMA 架构更适用于 OLTP 事务处理环境,当用于数据仓库环境时,由于大量复杂的数据处理必然导致大量的数据交互,将使 CPU 的利用率大大降低。