搭乘CC-NUMA快车
搭乘CC-NUMA快车
编者按:NUMA——Non Uniform Memory Access Achitecture,非均匀存储器存取结构,听起来既复杂又陌生的名字。它是在八十年代后期作为斯坦福大学的一个研究项目诞生的,九十年代,才作为商 业服务器投向市场。今天,NUMA系统能够运行世界上一些最大的Unix数据库应用,而且正被广泛接受为电子商务的主流技术,包括处理功能、I/O的大规 模可扩展性、高可用性、工作负荷和资源管理的广泛灵活性,而且无需改变SMP编程模型。在本期的技术特写中,我们将从带宽、体系结构,以及与SMP和群集 的比较等不同角度来诠释NUMA技术的特点,以期让读者对其有更深入的认识。
计算机带宽的重要性
每种信号都要占据一定的频率范围,我们称该频 率范围为带宽。为了使信号在通过信道时失真尽可能小,就要求信道的带宽尽可能宽。香农(Shannon)定理告诉我们,信号传输的极限数据率与信道的带宽 成正比。众所周知,不同信道的带宽是不同的。对于数字信号传输来说,通常用每秒传输的比特数作为单位。如同轴电缆的数据传输率为20Mbps,光纤的数据 传输率可达几千Mbps。计算机系统的带宽是指单位时间内所能执行的操作数目。通道或存储带宽是指它们的数据传输率。计算机各部件之间的数据传输率应均衡。
服务器是网络运行、管理、服务的中枢,是网络系统的关键设备之一,在网络系统中处于核心设备的地位。服务器不仅应具备处理速度快、容量大、容错性好、可扩展性强等特点,为了保证充分的数据传输率,应具有必要的带宽。
存储器带宽和均衡性
据统计,微处理器的CPU速度大约每年提高 80%,而存储器的访问速度每年仅增长7%,因而CPU与存储器性能之比以几何级数的比例增加。机器均衡性的理念在许多研究中进行过定义,对于一个特定的 处理器,它被定义为每个CPU周期中存储器访问的次数与每个CPU周期中浮点运算次数之比,即:(浮点运算次数/CPU周期)/(存储器访问次数/CPU 周期)。因为它没有把大多数系统中存储器访问的真正代价考虑在内,其结果不够合理。为了克服上述定义中的不足,人们重新定义为,在较长一段时间内对未缓存跨单元向量操作数处理时的存储器访问次数,因而均衡性=(峰值浮点运算次数/CPU周期性)/(持续时间内存储器的访问次数/CPU周期)
根据上述定义,对当前各种体系结构的计算机测试结果如下。
- 单处理器:均衡性一般到好,性能低到中等。
- 共享存储器:均衡性差,扩展性一般,性能中等。
- 向量机:均衡性好,扩展性中等,性能好。
- 分布式存储器:均衡性一般,扩展性很好,性能好。
计算机体系结构一览
单处理器的体系结构在分级存储的计算机中,对一个CPU来说,决定持续存储器带宽的关键因素是cache的未命中等待时间。目前,采用cache的机器其存储系统有了 显著的变化,存储器访问中等待时间与传输时间之比大大改变,1990年20MHz的机器等待时间和传输时间大致相等,1995年100MHz的机器中等待 时间占了绝大部分。
共享内存的体系结构
向量机属于共享内存体系结构(分布式共享内存机器除外)。它大大简化了cache的一致性难题和所造成的等待时间(处理延迟)。但是,向量机要比共享存储器或分级存储器的超标量机昂贵。
具有cache的机器和向量共享存储器计算机都有固定的存储器带宽限制,也就是说它的机器均衡性数值随着处理器数目增加而加大,因而处理器 数目有一个极限值。典型的情况是,共享存储器系统在各个处理器之间是非阻塞的(non blocking),从而允许多个CPU并发活动,这样可以补偿由 于等待时间造成的较大延迟。当使用多个处理器时,机器的cache命中率由等待时间、带宽限制和总线/网络/交叉开关控制器的限制共同决定。在向量计算机 中,限制主要在带宽上而不是等待时间。
对称多处理(SMP)共享存储器系统
对称多处理(SMP)节点包含两个或两个以上完全相同的处理器,在处理上没有主/从之分。每个处理器对节点计算资源享有同等访问权。节点内 的处理器和内存之间的互联必须利用可以保持一致性的互联方案。一致性意指无论在任何时候,处理器只能为内存的每个数据保持或共享唯一一个数值。
SMP共享存储器系统把多个处理器与一个集中的存储器相连。在SMP环境中,所有处理器都通过总线访问同一个系统的物理存储器,这就意味 着SMP系统只运行操作系统的一个拷贝。为单处理器系统编写的应用程序可以毫无改变地在SMP系统中运行。因此SMP系统有时也被称为均匀存储器。对于所 有处理器来说,访问存储器中的任何地址所需的时间都是一致的。
SMP体系结构的缺点是可伸缩性有限,因为存储器接口达到饱和时增加处理器并不能获得更高的性能。SMP处理器数目一般最多可达到32个。
崭新的分布式存储CC-NUMA体系结构
最近,一些厂商开始推出新的系统,这种系统把SMP节点连接在一起,能够比基于总线的SMP更易扩展。这些节点通过一个光纤通道互连,它们 的等待时间可以不一样。通常,离某个CPU“近”的存储器比“远”的存储器访问速度要快,这就是NUMA中N“非”的含意。由于UMA是指均匀存储器访 问,即各个CPU访问存储器的时间基本相同。而NUMA意指非均匀存储器访问。NUMA既保持了SMP系统单一操作系统拷贝、简便的应用程序编程模式和易 管理的特色,又能有效地扩充系统的规模。至于CC是指高速缓存的一致性(Cache Coherent),即某个存储单元的内容被某个CPU改写后,系统 可以很快地(通过专用的ASIC芯片和光纤通道)通知其他各个CPU。实践表明,适度的非均匀性可以工作得很好,远端与本地存储器的访问时间成比例使编程 人员可以采用类似网络中的消息传递机制。分布在各CPU附近的存储器在物理上是分开的,但在逻辑上是统一的,因而可以运行大型应用程序,而不必并行编程、 并行编译。
让CC-NUMA“转”起来
为了理解CC-NUMA是如何工作的,先从传统的对称多处理(SMP)结构讲起。 SMP是多个处理器通过一个叫互连总线的传输机构,相互间通信以及与一个共享存储器组通信。CC-NUMA与SMP类似,能够处理多个连接起来的处理器,每个处理器能存取一个公共的存储器组。这种结构把处理器分成几个节点,在每个节点中所 有处理器互连在一起,互相通信,并可与节点内的本地存储器通信以减轻SMP的总线阻塞情况。例如,一个64处理器的服务器可以分成2个大节点,每个节点有 32个处理器,并有其自己的存储器组。处理器也可存取其它所有节点中的存储器组,这种存取时间随着节点的距离远近而异,CC-NUMA相对于SMP扩展性 更强,只需一个操作系统,管理相对容易。
与群集不同的是,群集采用一种松散的结合方式,在几台机器之间相互通信,内部交换时间长,消耗大。
而且把几台机器作为一个系统管理,势必增加了管理上的难度。而CC-NUMA计算机则不同,无论它内部有多少个处理器,对用户来说,它也仅仅是简单的一台计算机。
总而言之,CC-NUMA克服了SMP和群集的某些弊端,在他们不能施展才能的地方发挥了作用。
典型的CC-NUMA系统包括Convex的Exemplar,HP V2600 NUMA系列、 IBM的NUMA Q和SGI的Origin系列。Convex和IBM系统采用32位Intel芯片的“环型”互连结构,即每个SMP结点插入到环形网 中,消息请求和应答都要环绕网运行。
产品篇
HP V2600 NUMA服务器V2600运行于HP-UX 11操作环境,能够支持15000个应用,包括主要数据库和ERP应用。V系列服务器体系结构的基础是HP的(SCA——可扩展的计算机体系结构)可伸缩计算机体系结构,它基于高可伸缩节点、一致性高速缓存和非均匀存储访问技术。
V2600的操作环境基于64位HP-UX UNIX操作系统,该系统提供了完全的64位环境,包括64位系统内核与地址空间,64位文件大小和文件系统大小,64位文件数据类型。
V级系统具有以下特性,如HP HyperPlane:交叉带宽为61.2GB/s的传输系统。交叉开关提供了从CPU 和I/O管道到存取系统的顺利访问。使用HP HyperPlane可防止处理内存和I/O通信的系统总线的系统性能下降。每一个节点最多包含32个处理器,8个存取板和支持28个PCI I/O控制器接口的7个I/O通道;包括2~128个64位PA 8600处理器;最大128GB SDRAM; 最大7.68 GB/s I/O管道吞吐率; 最多112个工业标准PCI I/O 控制接口。
为了进一步扩大扩展能力,HP使用了自己的基于内存互连连接起来的4个并行V系列服务器系统,以提供对CC-NUMA真正的支持。它具有 SMP和分布式存取体系结构的优点,包括编程模块、SMP特性和分布存取子系统的可伸缩性。SCA互连是一个多级内存子系统,第一级由传统SMP内存构 成。内存子系统的第二级是通过利用一个专用互连连接第一级内存创建的,该互连为高带宽和故障弹性提供多个双向环路。SCA HyperLink被实施为一系列单向链路(节点之间以点到点方式连接),允许以类似交叉内存请求的方式跨环路交叉访问,此外,该技术还允许在任何给定时 间内进行多个请求,以减少延迟时间。由于HP在SMP上的优势,因此每个节点很大,但节点数不多,结构更简单,提高传输效率,降低故障概率。为了提高访问 速率,内部完全通过内存连接,在本地内存中做远地内存的缓存,本地的CPU访问远程缓存时,先查看本地缓存,这样大大缩短了访问时间。
IBM NUMA-Q体系结构(原Sequent)
IBM NUMA-Q系统使用CC-NUMA或高速缓存相关的NUMA方案。内存单元紧邻多处理器SMP构建块,能够最大限度地提高CC-NUMA系统中的整个系统速度。这些构建块通过一个互联设备连接在一起,构成单一系统影像。
硬件高速缓存意味着不需要软件来保持多个数据拷贝的最新特性或在多例操作系统和应用程序之间传输数据。一切都是在硬件层次上管理的,就象在任何SMP节点中一样,其中单一事例操作系统使用多个处理器。
NUMA-Q系统使用基于Intel的4处理器或“quad”构建块,这些构建块也包括内存和7个输入/输出插槽。目前,IBM NUMA-Q最多支持16个构建块或64个处理器,它们通过一个基于硬件、高速缓存、速度很高的可扩充的相互连接设备连接在一起,构成单一NUMA系统, 其方式与给传统大型总线SMP系统的底板增加处理器基板相同。现有的NUMA-Q体系结构能够在单一系统节点中支持64个构建块或256个处理器。
NUMA-Q能提供集成的MVS风格多路径交换型光纤通道SAN (存储域网络)的Unix系统。这种功能是需要支持特大规模高性能事务和数据仓库环境的电子商务及客户关系管理(CRM)应用的一个关键启动技术。光纤通 道SAN允许大型后端Unix数据库机器及数百个前端Unix或NT应用服务器使用一个公用的交换光纤,经济有效地共享数据中心类磁盘存储和磁带库。
NUMA-Q通过一个交换型光纤通道SAN光纤直接将I/O运行到其连接的存储设备,而不是通过处理内存访问的互联。在NUMA Q系统 上,这消除了随着处理器增加损害大型SMP系统吞吐量的资源抢占。而且,由于在操作系统层次支持的I/O多路径特性,NUMA Q提供唯一固有的容错 SAN。
在一个24×7的电子商务环境,能够在不中断系统运行的情况下管理资源及在线和离线利用资源是一个重要的优势。NUMA-Q将能够在运行 Unix和Windows NT的基于交换机的下一代系统中实现这一功能。这种先进的计算机系统设计方案能够为其他体系结构不能支持的在线关键业务Unix和Windows NT系统提供性能、可扩展性、可用性和可管理性的结合。
SGI DSM CC-NUMA
SGI的DSM(分布式共享内存)CC-NUMA系统有很大的不同,它采用64位的RISC芯片、交叉开关和Craylink光纤通道,以 “胖”的超立方体结构互连,因而能以高带宽和低延迟方式运行。由于SGI的DSM CC-NUMA采用模块化结构、分布式内存、路由器专用芯片和分布式的I/O端口,信息的输入/输出通过一个智能的交叉开关在专用芯片接口上连接,它可以 和PCI、VME、SCSI、Ethernet、ATM、FDDI及其他I/O装置连接,因而在网络上可以提供极高速的数据传输率。在SGI 64位的操作系统IRIX的支持下,它的DSM CC-NUMA系统带宽和存储器性能可随CPU数目增加成比例增长,目前,SGI CC-NUMA机器已做到在512个CPU内,带宽可随CPU数目线性增长。因此可以称它为优秀的“带宽机器”。
SGI的带宽机器——Origin服务器,其高速的存储器带宽可达26GB/s、高速的I/O带宽可达102.4GB/s,最大内存可达 256GB,而联机的光纤通道磁盘容量可达400TB。不管是连接数据仓库、存储或检索、产品数据管理,还是为成千上万个客户提供Web服务, Origin服务器都能够胜任。
概念篇
大规模并行处理大规模并行处理(Massively Parallel Processing或者"ShareNothing")节点传统上是由单一CPU、少量的内存、部分I/O、节点间的互联以及每个节点的操作系统的一个 实例组成。节点间的互联(以及驻留于各节点的操作系统实例)不需要硬件一致性,因为每个节点拥有其自己的操作系统以及自己唯一的物理内存地址空间。因而, 一致性是在软件中通过“消息传送”(message passing)实现的。
MPP的性能调整涉及数据分区,以便最大限度地减少必须在节点之间传送的数据量。拥有数据自然分区的应用程序可以正常运行于大型MPP系统,例如电视点播(video on demand)应用。
COMA
COMA意为“高速缓存唯一的存储器体系结构”(Cache Only Memory Architecture),它是CCNUMA体系结构的竞争者,两者具有相同的目标,但实现方式不同。COMA节点不对内存部件实行分布,也不通过尖 端的互联设备使整个系统保持一致性。COMA节点没有内存,只在每个构建块中配置大容量的高速缓存。互联设备依然必须维护一致性,一个操作系统拷贝运行于 整个构建块,但没有特定数据的“本地"内存单元。COMA硬件可以补偿与内存分配和进程调度相关的不合适的操作系统算法。但它需要修改操作系统的虚拟存储 子系统,除高速缓存一致性互联板之外,还需要特别定制内存板。
群集
群集(或群集系统)由两个或更多的节点组成,每个节点运行各自的操作系统拷贝;每个节点运行各自的应用拷贝;节点共享其它公用资源池。与之 对照,MPP系统的节点不共享存储资源。这是群集化SMP系统与传统MPP系统之间的主要差别。重要的是,要注意在群集系统中必须在试图更新共用存储库 (数据库)任何部分之前执行锁定,以保持数据库内部的一致性。正是由于这一需求使群集的管理与扩充比单个SMP节点更难以执行。
从群集系统获取更多性能,比在节点内实现扩充更困难。主要障碍是单节点环境外的通讯成本问题。往节点外部传送信息必须忍受软件一致性的较 长延迟。拥有大量进程间通讯的应用程序在SMP节点内工作效果更好,因为通讯非常迅速。如果减少跨节点的进程间通讯需求,应用程序就可以在群集和MPP系 统实现更有效的扩展。
反射内存群集
反射内存群集(Reflective Memory Cluster,RMC)是群集化系统,在节点之间有一个内存复制或转储机制以及一个锁定信息流互联设备 。转储使用软件一致性技术来执行。反射内存群集系统为应用程序提供较迅速的消息传送,并使各个节点不必经过磁盘就能获得相同的内存页面。在RMC系统,从 其它节点的内存获得数据,比返回磁盘数据要快上百倍。显然,只有节点间需要共享数据,而且应用能够利用共享的数据,才可实现性能提高。
反射内存群集比传统的基于网络的消息传送速度更快,因为一旦建立连接,消息就可以由应用节点发送,不会干扰操作系统。
NUMA
NUMA范畴包含若干种不同体系结构,从广义上来讲,以下结构均可以视为拥有非均匀存储器访问延迟:RMC、MPP、CCNUMA以及 COMA,但它们之间的差异却相当大。RMC和MPP有多个节点,属于“NUMA"的部分是节点间的软件一致性。至于CCNUMA和COMA,其硬件一 致性是在节点内部,其“NUMA"组件是在一个节点内。