【操作系统】SMP vs NUMA vs MPP 架构简介

目录

概述

单处理器系统(Single Processor Systems)

多处理器系统(Multi Processor Systems)

集群系统(Clustered Systems)

SMP对称多处理模型

SMP面临的痛点问题

NUMA非一致性处理模型

Numa面临的痛点问题

MPP大规模并行处理模型

MPP面临的痛点问题

结论


概述

操作系统的体系架构

基于通用处理器数量的计算机系统类型如下:

  • 单处理器系统(Single Processor Systems)
  • 多处理器系统(Multi Processor Systems)
  • 集群系统(Clustered Systems)

 

单处理器系统(Single Processor Systems)

单处理器系统只有一个主CPU,以便执行一个通用指令集,该指令集包括执行用户进程的指令。几乎所有单处理器系统都带有其他专用处理器。它们或为特定设备的处理器,如磁盘、键盘、图形控制器;或为更通用的处理器,如在系统组件之间快速移动数据的 I/O 处理器。

所有这些专用处理器执行有限指令集,而并不执行用户进程。在有的环境下,它们由操作系统来管理,此时操作系统将要做的任务信息发给它们,并监控它们的状态。

例如,磁盘控制器的微处理器接收来自主 CPU 的一系列请求,并执行自己的磁盘队列和调度算法。这种安排使得主 CPU 不必再执行磁盘调度。PC 的键盘有一个微处理器来将击键转换为代码,并发送给 CPU。

在其他的环境下,专用处理器作为低层组件集成到硬件。操作系统不能与这些处理器通信,但是它们可以自主完成任务。专用处理器的使用十分常见,但是这并不能将一个单处理器系统变成多处理器系统。如果系统只有一个通用 CPU,那么就为单处理器系统。如下图所示:

 

多处理器系统(Multi Processor Systems)

近年来,多处理器系统(multi processor system,也称为并行系统(parallel system)或多核系统(multicore system))开始主导计算领域。这类系统有两个或多个紧密通信的CPU,它们共享计算机总线,有时还共享时钟、内存和外设等。多处理器系统起初主要应用于服务器,后来也应用于桌面和笔记本系统。近来,多处理器也出现在移动设备上,如智能手机和平板电脑。

多处理器系统有三个主要优点:

  • 增加吞吐量:通过增加处理器数量,以期能在更短时间内完成更多工作。采用 N 个处理器的加速比不是 N,而是小于 N。当多个 CPU 协同完成同一任务时,为了让各部分能够正确执行,会有一定的额外开销。这些开销,加上竞争共享资源,会降低因增加了 CPU 的期望增益。这类似于 N 位程序员一起紧密工作,而不能完成 N 倍于单个程序员的工作量。
  • 规模经济:多处理器系统的价格要低于相同功能的多个单处理器系统的价格,因为前者可以共享外设、大容量存储和电源供给。如果多个程序需要操作同一数据集,那么将这些数据放在同一磁盘并让多处理器共享,将比采用多个具有本地磁盘的计算机和多个数据副本更为节省。
  • 增加可靠性:如果将功能分布在多个处理器上,那么单个处理器的失灵不会使得整个系统停止,而只会使它变慢。如果 10 个处理器中的 1 个出了故障,那么剩下的 9 个会分担起故障处理器的那部分工作。因此,整个系统只是比原来慢了 10%,而不是完全失败。

对于许多应用,增加计算机系统的可靠性是极其重要的。根据剩余有效硬件的级别按比例继续提供服务的能力称为适度退化(graceful degradation)。有的系统超过适度退化,称为容错(fault tolerant),因为它们能够容忍单个部件错误,并且仍然继续运行。

现在所用的多处理器系统有两种类型。有的系统采用非对称处理(asymmetric multiprocessing),即每个处理器都有各自特定的任务。一个主处理器(boss processor)控制系统,其他处理器或者向主处理器要任务或做预先规定的任务。这种方案称为主从关系。主处理器调度从处理器,并安排工作。

最为常用的多处理器系统采用对称多处理(Symmetric Multiprocessing,SMP),每个处理器都参与完成操作系统的所有任务。SMP 表示所有处理器对等,处理器之间没有主从关系。下图显示了一个典型的 SMP 结构。注意,每个处理器都有自己的寄存器集,也有私有或本地缓存;不过,所有处理器都共享物理内存。

 

由于各个 CPU 互相独立,一个可能空闲而另一个可能过载,导致效率低。这种低效是可以避免的,只要处理器共享一定的数据结构。这种形式的多处理器系统可动态共享进程和资源(包括内存),进而可降低处理器之间的差异。

多处理通过增加 CPU 来提高计算能力。如果 CPU 集成了内存控制器,那么增加 CPU 也能增大系统的访问内存。不论如何,多处理可使系统的内存访问模型,从均匀内存访问(Uniform Memory Access,UMA)改成非均匀内存访问(Non-Uniform Memory Access,NUMA)。对 UMA,CPU 访问 RAM 的所需时间相同;而对 NUMA,有的内存访问的所需时间更多,这会降低性能。操作系统通过资源管理可以改善 NUMA 的问题。

 

集群系统(Clustered Systems)

另一类型的多处理器系统是集群系统(clustered system),这种系统将多个 CPU 组合在一起。集群系统与刚刚所述的多处理器系统不同,它由两个或多个独立系统(或节点)组成。这样的系统称为松耦合的(loosely coupled)。每个节点可为单处理器系统或多核系统。

集群通常用于提供高可用性(high availability)服务,这意味着即使集群中的一个或多个系统出错,仍可继续提供服务。一般来说,通过在系统中增加一定冗余,可获取高可用性。每个集群节点都执行集群软件层,以监视(通过局域网)一个或多个其他节点。如果被监视的机器失效,那么监视机器能够取代存储的拥有权,并重新启动在失效机器上运行的应用程序。应用程序的用户和客户只会感到短暂的服务中止。

集群可以是对称的,也可以是非对称的。对于非对称集群(asymmetric clustering),一台机器处于热备份模式(hot-standby mode),而另一台运行应用程序。热备份主机只监视活动服务器。如果活动服务器失效,那么热备份主机变成活动服务器。对于对称集群(symmetric clustering),两个或多个主机都运行应用程序,并互相监视。由于充分使用现有硬件,当有多个应用程序可供执行时,这种结构更为高效。

每个集群由通过网络相连的多个计算机系统组成,也可提供高性能计算环境。每个集群的所有计算机可以并发执行一个应用程序,因此与单处理器和 SMP 系统相比,这样的系统能够提供更为强大的计算能力。

当然,这种应用程序应当专门编写,才能利用集群。这种技术称为并行计算(parallelization),即将一个程序分成多个部分,而每个部分可以并行运行在计算机或集群计算机的各个核上。通常,这类应用中的每个集群节点解决部分问题,而所有节点的计算结果合并在一起,以便形成最终解决方案。

 

 

SMP对称多处理模型

在计算领域,SMP(Symmetric Multi-Processing)对称多处理是指服务器中多个CPU对称工作,无主次或从属关系的硬件架构。

各CPU共享相同的物理内存,每个 CPU访问内存中的任何地址所需时间是相同的,因此SMP也被称为一致存储器访问结构(UMA:Uniform Memory Access)。

对SMP服务器进行扩展的方式包括增加内存、使用更快的CPU、增加CPU、扩充I/O(槽口数与总线数)以及添加更多的外部设备(通常是磁盘存储)。

SMP服务器的主要特征是共享,系统中所有资源(CPU、内存、I/O等)都是共享的。也正是由于这种特征,导致了SMP服务器的主要问题,那就是它的扩展能力非常有限。

 

SMP面临的痛点问题

对于SMP服务器而言,优点是并发度很高, 但是每一个共享的环节都可能造成SMP服务器扩展时的瓶颈,而最受限制的则是内存。由于每个CPU必须通过相同的内存总线访问相同的内存资源,因此随着CPU数量的增加,内存访问冲突将迅速增加,最终会造成CPU资源的浪费,使CPU性能的有效性大大降低。实验证明,SMP 系统最好的情况是有 2-4 个 CPU,适用于 PC、笔记本电脑和小型服务器等。

 

NUMA非一致性处理模型

由于SMP在扩展能力上的限制,人们开始探究如何进行有效地扩展从而构建大型系统的技术,NUMA(Non-Uniform Memory Access)就是这种努力下的结果之一。利用NUMA技术,可以把几十个CPU(甚至上百个CPU)组合在一个服务器内。如下图所示:

NUMA服务器的基本特征是具有多个Node模块,每个Node模块由多个CPU组成,并且具有独立的本地内存。

由于其Node之间可以通过Numa互联模块进行连接和信息交互,因此每个Node可以访问整个系统的内存。显然,访问本地内存的速度将远远高于访问远地内存(系统内其它Node的内存)的速度,这也是非一致存储访问NUMA的由来。

由于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同Node之间的信息交互。利用NUMA技术,可以较好地解决原来SMP系统的扩展问题,在一个物理服务器内可以支持上百个CPU。比较典型的NUMA服务器就是现在的ARM服务器。

 

Numa面临的痛点问题

NUMA技术同样有一定缺陷,由于访问远地内存的延时远远超过本地内存,因此当CPU数量增加时,系统性能无法线性增加。

 

MPP大规模并行处理模型

MPP(Massively Parallel Processing)提供了另外一种进行系统扩展的方式,它由多个SMP 服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个 SMP 服务器 ( 每个 SMP 服务器称节点 ) 通过节点互联网络连接而成,每个节点只访问自己的本地资源 ( 内存、存储等 ) ,是一种完全无共享 (Share Nothing) 结构,因而扩展能力最好,理论上其扩展无限制。

在 MPP 系统中,每个 SMP 节点也可以运行自己的操作系统、数据库等。但和 NUMA 不同的是,它不存在异地内存访问的问题。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配 (Data Redistribution) 。

但是 MPP 服务器需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程。目前一些基于 MPP 技术的服务器往往通过系统级软件 ( 如数据库 ) 来屏蔽这种复杂性。举例来说, GreenPlum就是基于 MPP 技术的一个关系数据库软件,基于此数据库来开发应用时,不管后台服务器由多少个节点组成,开发人员所面对的都是同一个数据库系统,而不需要考虑如何调度其中某几个节点的负载。

MPP (Massively Parallel Processing),大规模并行处理系统,这样的系统是由许多松耦合的处理单元组成的,要注意的是这里指的是处理单元而不是处理器。每个单元内的CPU都有自己私有的资源,如总线,内存,硬盘等。在每个单元内都有操作系统和管理数据库的实例复本。这种结构最大的特点在于不共享资源。

 

除了不共享资源外,MPP的第二个主要概念就是并行。每个主机运行着完全一致的数据处理逻辑,使用着本地存储上的私有数据块。在不同的执行阶段中间有一些同步点。这里有一个经典的MPP查询时间线的例子:每个垂直的线是一个同步点。例如:同步阶段要求在集群中”shuffle”数据以用于join和聚合(aggregations)操作,因此同步阶段可能执行一些数据聚合,表join,数据排序的操作,而每个主机执行剩下的计算任务。

 

MPP面临的痛点问题

这样的设计对于所有的MPP解决方案来说都有一个主要的问题——短板效应。如果一个节点总是执行的慢于集群中其他的节点,整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),无论集群有多少节点,都不会有所提高。这里有一个例子展示了故障节点(主机3)是如何降低集群的执行速度的。

大多数情况下,除了主机3 其他的所有执行器都是空闲状态。这是因为他们都在等待主机3执行完成后才能执行同步过程,这也是我们的问题的根本。比如,当MPP系统中某个节点的RAID由于磁盘问题导致的性能很慢,或者硬件或者系统问题带来的CPU性能问题等等,都会产生这样的问题。所有的MPP系统都面临这样的问题。

MPP还有一个问题就是并发度的问题。并发度就是同一时刻可以高效运行的查询数。MPP是完美对称的,当查询运行的时候,集群中每个节点并发的执行同一个任务。这也就意味着MPP集群的并发度和集群中节点的数量是完全没有关系的。比如说,4个节点的集群和400个节点的集群将支持同一级别的并发度,而且他们性能下降的点基本上是同样。每个节点的CPU核数是固定的,超过CPU核数的并发也是等待执行。

 

结论

本文主要介绍了SMP架构、NUMA架构、MPP架构的一些优点和面临的一些痛点问题。当我们编写应用程序的时候,一定要理解这些架构能给我们程序带来哪些优势,同时又有哪些架构本身的问题导致我们程序的性能降低。

MPP系统不共享资源,因此对它而言,资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。由于MPP系统因为要在不同处理单元之间传送信息,在通讯时间少的时候,那MPP系统可以充分发挥资源的优势,达到高效率。也就是说:操作相互之间没有什么关系,处理单元之间需要进行的通信比较少,那采用MPP系统就要好。因此, MPP 系统在决策支持和数据挖掘方面显示了优势。

MPP系统因为要在不同处理单元之间传送信息,所以它的效率要比SMP要差一点。在通讯时间多的时候,那MPP系统可以充分发挥资源的优势。因此当前使用的 OTLP 程序中,用户访问一个中心数据库,如果采用 SMP 系统结构,它的效率要比采用 MPP 结构要快得多。

NUMA架构来看,它可以在一个物理服务器内集成许多CPU,使系统具有较高的事务处理能力,由于远地内存访问时延远长于本地内存访问,因此需要尽量减少不同CPU模块之间的数据交互。显然,NUMA架构更适用于OLTP事务处理环境,当用于数据仓库环境时,由于大量复杂的数据处理必然导致大量的数据交互,将使CPU的利用率大大降低。

 

参考资料

  • https://cloudblogs.microsoft.com/sqlserver/2014/07/30/transitioning-from-smp-to-mpp-the-why-and-the-how/
  • https://medium.com/@putrasulung2108/mpp-architecture-6bfb11b27a6a
  • https://www.jianshu.com/p/9d3d84b0b8bd
  • https://www.youtube.com/watch?v=So9SR3qpWsM
  • https://www.sciencedirect.com/topics/computer-science/symmetric-multi-processor
  • https://www.sciencedirect.com/topics/computer-science/massively-parallel-processing
  • http://www.ittoday.info/AIMS/Information_Management/3-02-45.pdf
  • https://www.modb.pro/db/33257
  • http://blog.itpub.net/29519108/viewspace-2650396/
  • https://www.dazhuanlan.com/2019/12/05/5de81ae2a1f06/
分享大数据行业的一些前沿技术和手撕一些开源库的源代码
微信公众号名称:技术茶馆
微信公众号ID    :    Night_ZW
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值