现代计算机的CPU处理速度比它的主存速度快不少。而在早期的计算和数据处理中,CPU通常比它的主存慢。但是随着超级计算机的到来,处理器和存储器的性能在二十世纪六十年代达到平衡。自从那个时候,CPU常常对数据感到饥饿而且必须等待存储器的数据到来。为了解决这个问题,很多在80和90年代的超级计算机设计专注于提供高速的存储器访问,使得计算机能够高速地处理其他系统不能处理的大数据集。
限制访问存储器的次数是现代计算机提高性能的要点。对于商品化的处理器,这意味着设置数量不断增长的高速缓存和使用不断变得精巧复杂的算法以防止“缓存数据未命中(cache missed)”。但是操作系统和应用程序大小的明显增长压制了前述的缓存技术造成的提升。没有使用NUMA的
多处理器系统使得问题更糟糕。因为同一时间只能有一个处理器访问计算机的存储器,所以在一个系统中可能存在多个处理器在等待访问存储器。
NUMA通过提供分离的存储器给各个处理器,避免当多个处理器访问同一个存储器产生的性能损失来试图解决这个问题。对于涉及到分散的数据的应用(在服务器和类似于服务器的应用中很常见),NUMA可以通过一个共享的存储器提高性能至n倍,而n大约是处理器(或者分离的存储器)的个数。
当今数据计算领域的主要应用程序和模型可大致分为联机事务处理(OLTP)、决策支持系统(DSS)和企业信息通讯(BusinessCommunications)三大类。而小型独立服务器模式、SMP(对称多处理)模式、MPP(大规模并行处理)模式和NUMA模式,则是上述3类系统设计人员在计算平台的体系结构方面可以采用的选择。
SMP模式将多个处理器与一个集中的存储器相连。在SMP模式下,所有处理器都可以访问同一个系统物理存储器,这就意味着SMP系统只运行操作系统的一个拷贝。因此SMP系统有时也被称为一致存储器访问(UMA)结构体系,一致性意指无论在什么时候,处理器只能为内存的每个数据保持或共享唯一一个数值。很显然,SMP的缺点是可伸缩性有限,因为在存储器接口达到饱和的时候,增加处理器并不能获得更高的性能。
MPP模式则是一种分布式存储器模式,能够将更多的处理器纳入一个系统的存储器。一个分布式存储器模式具有多个节点,每个节点都有自己的存储器,可以配置为SMP模式,也可以配置为非SMP模式。单个的节点相互连接起来就形成了一个总系统。MPP体系结构对硬件开发商颇具吸引力,因为它们出现的问题比较容易解决,开发成本比较低。由于没有硬件支持共享内存或高速缓存一致性的问题,所以比较容易实现大量处理器的连接。
可见,单一SMP模式与MPP模式的关键区别在于,在SMP模式中,数据一致性是由硬件专门管理的,这样做比较容易实现,但成本较高;在MPP模式中,节点之间的一致性是由软件来管理,因此,它的速度相对较慢,但成本却低得多。
NUMA模式,也采用了分布式存储器模式,不同的是所有节点中的处理器都可以访问全部的系统物理存储器。然而,每个处理器访问本节点内的存储器所需要的时间,可能比访问某些远程节点内的存储器所花的时间要少得多。换句话说,也就是访问存储器的时间是不一致的,这也就是这种模式之所以被称为“NUMA”的原因。简而言之,NUMA既保持了SMP模式单一操作系统拷贝、简便的应用程序编程模式以及易于管理的特点,又继承了MPP模式的可扩充性,可以有效地扩充系统的规模。这也正是NUMA的优势所在。
从架构来看,NUMA 与 MPP 具有许多相似之处:它们都由多个节点组成,每个节点都具有自己的 CPU、内存、I/O,节点之间都可以通过节点互联机制进行信息交互。那么它们的区别在哪里?首先是节点互联机制不同,NUMA 的节点互联机制是在同一个物理服务器内部实现的,当某个 CPU 需要进行远地内存访问时,它必须等待,这也是 NUMA 服务器无法实现 CPU 增加时性能线性扩展的主要原因。而 MPP 的节点互联机制是在不同的 SMP 服务器外部通过 I/O 实现的,每个节点只访问本地内存和存储,节点之间的信息交互与节点本身的处理是并行进行的。因此 MPP 在增加节点时性能基本上可以实现线性扩展。其次是内存访问机制不同。在 NUMA 服务器内部,任何一个 CPU 可以访问整个系统的内存,但远地访问的性能远远低于本地内存访问,因此在开发应用程序时应该尽量避免远地内存访问。在 MPP 服务器中,每个节点只访问本地内存,不存在远地内存访问的问题。
众所周知,典型的数据仓库环境具有大量复杂的数据处理和综合分析,要求系统具有很高的 I/O 处理能力,并且存储系统需要提供足够的 I/O 带宽与之匹配。而一个典型的 OLTP 系统则以联机事务处理为主,每个交易所涉及的数据不多,要求系统具有很高的事务处理能力,能够在单位时间里处理尽量多的交易。显然这两种应用环境的负载特征完全不同。
从 NUMA 架构来看,它可以在一个物理服务器内集成许多 CPU,使系统具有较高的事务处理能力,由于远地内存访问时延远长于本地内存访问,因此需要尽量减少不同 CPU 模块之间的数据交互。显然,NUMA 架构更适用于 OLTP 事务处理环境,当用于数据仓库环境时,由于大量复杂的数据处理必然导致大量的数据交互,将使 CPU 的利用率大大降低。
相对而言,MPP 服务器架构的并行处理能力更优越,更适合于复杂的数据综合分析与处理环境。当然,它需要借助于支持 MPP 技术的关系数据库系统来屏蔽节点之间负载平衡与调度的复杂性。另外,这种并行处理能力也与节点互联网络有很大的关系。显然,适应于数据仓库环境的 MPP 服务器,其节点互联网络的 I/O 性能应该非常突出,才能充分发挥整个系统的性能。但这并不是绝对的,性能的好坏由很多因素组成,比如Oracle Exadata, 它没有使用 MPP 架构,但性能是相当的优越了。所以单从服务器的一个方面分析性能有一定的片面性,而现在的趋势是整体的从多方面(包括软件层面)优化服务器的性能。
————————————————
本文内容整合自:https://baike.baidu.com/item/NUMA/6906025?fr=aladdin和https://blog.csdn.net/m0_37253968/article/details/103274611
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)