答案:对于服务器而言(不管是PC服务器,还是UNIX服务器),单纯地提高单个处理器的运算能力和处理能力正在变得越来越难,虽然许多制造商从材料、工艺和设计等方面进行了不懈的努力,近期内仍然使得CPU保持着高速的增长势态,但高频之下的高功耗所引起的电池容量问题和散热问题等负面效应,以及这些负面效应对整机系统产生的电磁兼容性问题,又反过来将CPU运算能力的提升推到了暮年。显然,提高单个处理器速度和性能已是强弩之末,而研发多个CPU的并行处理技术,才是真正提高现代服务器处理能力和运算速度的有效途径。这也正是多处理器服务器不仅是UNIX服务器的专利,而且也是已经在PC服务器中普遍采用的原因。目前,业界比较关注的并行处理技术主要有SMP技术、MPP技术、COMA技术、集群技术和NUMA技术等。
1.SMP技术
SMP(对称多处理—Symmetrical MultiProcessing)技术是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,多个处理器运行操作系统的单一复本,并共享内存和一台计算机的其他资源。所有的处理器都可以平等地访问内存、I/O和外部中断。在非对称多处理系统中,任务和资源由不同处理器进行管理,有的CPU只处理I/O,有的CPU只处理操作系统的提交任务,显然非对称多处理系统是不能实现负载均衡的。在对称多处理系统中,系统资源被系统中所有CPU共享,工作负载能够均匀地分配到所有可用处理器之上。
目前,大多数SMP系统的CPU是通过共享系统总线来存取数据,实现对称多处理的。如某些RISC服务器厂商使用Crossbar或Switch方式连接多个CPU,虽然性能和可扩展性优于Intel架构,但SMP的扩展性仍有限。
在SMP系统中增加更多处理器的难点是系统不得不消耗资源来支持处理器抢占内存,以及内存同步两个主要问题。抢占内存是指当多个处理器共同访问内存中的数据时,它们并不能同时去读写数据,虽然一个CPU正读一段数据时,其他CPU可以读这段数据,但当一个CPU正在修改某段数据时,该CPU将会锁定这段数据,其他CPU要操作这段数据就必须等待。
显然,CPU越多,这样的等待问题就越严重,系统性能不仅无法提升,甚至下降。为了尽可能地增加更多的CPU,现在的SMP系统基本上都采用增大服务器Cache容量的方法来减少抢占内存问题,因为Cache是CPU的“本地内存”,它与CPU之间的数据交换速度远远高于内存总线速度。又由于Cache支持不共享,这样就不会出现多个CPU抢占同一段内存资源的问题了,许多数据操作就可以在CPU内置的Cache或CPU外置的Cache中顺利完成。
然而,Cache的作用虽然解决了SMP系统中的抢占内存问题,但又引起了另一个较难解决的所谓“内存同步”问题。在SMP系统中,各CPU通过Cache访问内存数据时,要求系统必须经常保持内存中的数据与Cache中的数据一致,若Cache的内容更新了,内存中的内容也应该相应更新,否则就会影响系统数据的一致性。由于每次更新都需要占用CPU,还要锁定内存中被更新的字段,而且更新频率过高又必然影响系统性能,更新间隔过长也有可能导致因交叉读写而引起数据错误,因此,SMP的更新算法十分重要。目前的SMP系统多采用侦听算法来保证CPU Cache中的数据与内存保持一致。Cache越大,抢占内存再现的概率就越小,同时由于Cache的数据传输速度高,Cache的增大还提高了CPU的运算效率,但系统保持内存同步的难度也很大。
在硬件方面,SMP可以在UltraSPARC、SPARCserver、Alpha以及PowerPC架构上实现,也可以利用包括486以上所有Intel芯片来实现。
2.集群技术
集群(Cluster)技术是近几年兴起的发展高性能计算机的一项技术。它是一组相互独立的计算机,利用高速通信网络组成一个单一的计算机系统,并以单一系统的模式加以管理。其出发点是提供高可靠性、可扩充性和抗灾难性。一个集群包含多台拥有共享数据存储空间的服务器,各服务器通过内部局域网相互通信。当一台服务器发生故障时,它所运行的应用程序将由其他服务器自动接管。在大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内的任一系统上运行的服务都可被所有的网络客户使用。采用集群系统通常是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。常见集群技术有:
(1)服务器镜像技术
(2)应用程序错误接管集群技术
错误接管集群技术是将建立在同一个网络里的两台或多台服务器通过集群技术连接起来,集群节点中的每台服务器各自运行不同的应用,具有自己的广播地址,对前端用户提供服务,同时每台服务器又监测其他服务器的运行状态,为指定服务器提供热备份服务。
错误接管集群技术通常需要共享外部存储设备—磁盘阵列柜,两台或多台服务器通过SCSI电缆或光纤与磁盘阵列柜相连,数据都存放在磁盘阵列柜上。这种集群系统中通常是两个节点互为备份的,而不是几台服务器同时为一台服务器备份,集群系统中的节点通过串口、共享磁盘分区或内部网络来互相监测对方的心跳。
错误接管集群技术经常用在数据库服务器、MAIL服务器等的集群中。这种集群技术由于采用共享存储设备,所以增加了外设费用。它最多可以实现32台机器的集群,极大地提高了系统的可用性及可扩展性。目前在提高系统的可用性方面用得比较广泛的是应用程序错误接管技术,即我们通常所采用的双机通过SCSI电缆共享磁盘阵列的集群技术。
(3)容错集群技术
容错集群技术的一个典型的应用即容错机,在容错机中,每一个部件都具有冗余设计。容错集群技术的实现往往需要特殊的软硬件设计,因此成本很高,但是容错系统最大限度地提高了系统的可用性,是财政、金融和安全部门的最佳选择。
3.NUMA技术
现今的64位UNIX并行计算服务器可分为两类:分布式共享存储结构(DSM)和集群系统。非均匀存储访问(NUMA)是一种并行模型,属于DSM这一类。NUMA的物理内存分布在不同节点上,在一个处理器存取远程节点的数据,比存取同一点的局部数据“路径”远一些,时间长一些,所以是非均匀存储访问。对称多处理也是一种共享存储器的多处理机结构。它的单一寻址空间、简单的编程方式、操作方便是其容易普及的主要原因。大规模并行处理(MPP)属于集群系统这一类体系结构,它的优势是可扩展性好,但需要并行编程和并行编译,使用不便。NUMA系统把SMP与集群的优势结合在一起,它既有SMP的可编程性,又具有集群的可扩展性。实际上,这一“优势的结合”实为一种折衷,其中关键是寻求结合的途径并确定结合点。
NUMA3系统架构的由来
NUMA(非均匀存储器存取结构-Non Uniform Memory Access Architecture)是在八十年代后期作为斯坦福大学的一个研究项目诞生的。1995年,SGI与斯坦福大学DASH项目组一起设计出了第一代NUMA系统;1996年,SGI推出了第二代NUMA系统,该系统的处理器数目可以从32个一直扩展到512个,并且系统带宽可随处理器数目增加而线性扩展;为了进一步扩展NUMA架构的功能和提高灵活性,SGI在2000年秋季推出了第三代NUMA系统,简称NUMA3系统。新系统可以使系统的计算能力、内存容量、外存容量、图形性能及联网能力独立地扩展,NUMA3系统具有多功能性、模块化、灵活性等三大特点。用户可以根据需要量体裁衣地配置系统,因而投资可以得到充分保护。第三代NUMA系统采用不同的功能模块(Brick)构成,这些模块比第二代NUMA机的模块小,功能更专一、更具可扩展性,而且尺寸标准化,这就进一步增加了系统的灵活性。
在第三代NUMA服务器中,采用性能更好的交叉开关Bedrock,所有的处理器和存储器通过Bedrock连接在一起。这些处理器、存储器和交叉开关的结合组成了称为NUMAlink的互联结构。另外,在第三代NUMA服务器中采用了更先进的路由芯片,通过使用特殊的光缆提供具有高带宽和极低延迟的互联网络,路由芯片所有的Bedrock交叉开关连接起来形成一个单一的、连续的达1TB的存储空间。处理器和本地以及远程存储器之间的通信宽带(双向)由原来的1.6GBps提高到3.2GBps。另外,电源采用N+1的冗余方式,因此可靠性也进一步提高。
在NUMA体系结构中,每个处理器与自已的本地存储器和高速缓存相连,多个处理器通过处理器、存储器互联网络相连。处理器还通过处理器、I/O网络访问共享的I/O和外围设备。至于处理器之间的通信则通过可选的处理器之间的通信网络来实现。NMUA技术在科学与工程计算领域具有不可替代的地位,在联机事务处理(OLTP)、决策支持服务(DSS)和Intranet以及Internet中的地位也越来越重要。目前,NUMA并行机的处理器数目可达到512个,且带宽可随处理器数目基本上呈线性扩展。这样大的处理器数,使单一系统映像的NUMA机足以覆盖绝大多数的应用。首先,由于它具有与SMP相同的编程模式,因此在科学与工程计算领域具有不可替代的地位;其次,由于它具有共享内存和良好的可扩展性优势,所以能很好适应企业数据中心的多种应用。
今天,NUMA系统能够运行世界上一些最大的UNIX数据库应用,而且正被广泛接受为电子商务的主流技术,包括处理功能、I/O的大规模可扩展性、高可用性、工作负荷和资源管理的广泛灵活性,而且无需改变SMP编程模型。
存储一致性与ccNUMA
在NUMA并行机中,虽然存储器在物理上被分配到各节点中,但可被系统内所有处理器访问或共享。存储一致性问题是由于多个处理器共享同一个存储单元而引起的。SGI采用高速缓存一致性(Cache Coherent)技术来解决存储一致性问题,这就是“ccNUMA”并行机名称的由来。在ccNUMA系统中,每个CPU有一个私用高速缓冲存储器。为了得到较好的性能,CPU经常在它的高速缓存中取指令及存储数据。在这种系统中,一个存储器地址的内容可以有许多独立的拷贝给各个CPU。如果每个CPU指向同一个存储器地址,则每个CPU的高速缓存将得到该地址的内容拷贝。但是当一个CPU修改该地址的内容后,必须阻止其他各个CPU使用当前已经“过时”的数据,这就是所谓高速缓存一致性问题。那么如何保证所有高速缓存能反映存储器的真实情况呢?
高速缓存一致性不是用软件来实现,它必须用硬件来管理。高速缓存一致性问题也不是用CPU来实现,而是用Hub芯片中的部分辅助线路来实现。为了提高系统的带宽和规模可伸缩性,在采用ccNUMA体系结构的服务器中,不采用基于总线的广播方法,而是采用基于目录的高速缓存一致性方案。任何时候,当一个节点请求访问存储器中某一Cache行时,它的集线器就启动曾经访问过该行节点的高速缓存,并把Cache行的存储器数据拷贝到这一节点的高速缓存中。当存储器中的Cache行未被独占时,其他各节点就可按同样方式通过互联网络从高速缓存中读取该行数据。当一个CPU要修改一个Cache行时,它必须取得独占权。为此,集线器从目标行的状态位中进行检索,并发送一个无效信息给对该行数据作过拷贝的每个节点,在目录存储器中设置了对内容作修改的节点的编号。当一个CPU要读一个Cache行,且该行被独占时,集线器就要求该节点对这个Cache行作拷贝。其他节点则通过互联网络从拥有独占权节点的高速缓存中拷贝该Cache行的最新信息。如果两个节点要求同时访问某一Cache行时,则有协议来保证某个节点去访问该Cache行。
ccNUMA结构的服务器在性能、灵活性、可用性方面都能适合用户多种应用的要求,它已成为当今互联网经济时代非常卓越的Internet/Web服务器,特别是在宽带因特网中作为多媒体应用的核心服务器。与集群不同的是,集群采用一种松散的结合方式,在几台机器之间相互通信,内部交换时间长、消耗大,而且把几台机器作为一个系统管理,势必增加了管理上的难度。而ccNUMA计算机则不同,无论它内部有多少个处理器,对用户来说,它也仅仅是简单的一台计算机。
总而言之,ccNUMA克服了SMP和集群的某些弊端,在他们不能施展才能的地方发挥了作用。
模块化结构
模块化服务器主要包括计算模块、I/O模块和海量存储器模块。这些模块协同工作,构成一个模块化服务器系统。在一个模块化服务器系统中,可以分别对每一个模块进行升级、故障查找,或用新模块替换旧模块,同类模块也可以随时加入到模块化服务器中,以便对系统进行扩展。模块化服务器的最大好处之一,就是可以保护客户的投资。模块化服务器是一种可伸缩的服务器,客户可以随着业务需要,通过向服务器中添加各种模块,扩展他们的服务器系统;另一个显著优点是维护管理十分方便。模块化服务器增强了系统的可用性和容错性。从高性能多处理器计算机体系结构观点来看,ccNUMA体系结构,把多个处理器通过路由器光纤互联在一起,系统带宽可随系统规模扩大而增加,从而克服了基于总线的SMP体系结构所造成的瓶颈。ccNUMA结构采用超立方体的易做图互联特性,加上模块化计算所带来的灵活性,使系统的可伸缩性达到了前所未有的水平,同时节省了费用。因此,模块化的NUMA服务器在灵活性和经济性方面达到了一个新境界。
硬件分区
硬件分区,是将一台服务器的硬件分割成多个分区的体系结构。将服务器配置的处理器、内存和I/O控制器等硬件资源分配给多个分区,让各分区上运行不同的OS,也就是提供“分区功能”。利用系统的硬件分区能力,系统可同时为多种不同操作系统提供支持,从而满足客户对相同物理硬件不断增长的需求。系统分区最初是静态的,当资源从一个分区移到另一个分区时,这两个分区中的应用和操作系统需要停止,在操作控制台对系统重新配置后,应用和操作系统才可以重新启动。随着操作系统进一步完善,操作系统在支持热插拔和热添加能力的同时,也为动态分区提供了所需要的支持基础,这就是说,资源可以在各个分区之间移动,而不会影响这一分区中的应用运行。长久以来一直存在着一个话题:UNIX服务器能否替代专有系统。这同样是一个见仁见智的问题,但是不容忽视的事实是,各UNIX厂商在高端产品不断推陈出新,增加产品的技术内涵,既以达到并超过大型主机为目标,又作为自己UNIX技术的集中体现,与其他UNIX厂商竞争。
当然, UNIX技术的发展决不能仅限于性能和功能上。在安全性和管理性上,UNIX服务器有不少需要向主机学习的地方。但是,高端UNIX系统已经基本可以满足主机用户的要求,并且在各厂家的推动下更快地进步。UNIX占据主机的部分市场也将是不可避免的。这就和NT服务器和低端UNIX服务器的竞争有些类似。
随着市场竞争的日益加剧和IT企业的大规模兼并,曾经出现的几十家UNIX厂商竞相角逐的景象已不复存在。目前仅剩下几家UNIX厂商,他们把持了UNIX服务器的市场和技术发展趋势。下面我们就看看几款有代表性的产品。
。HP 9000 Superdome高端UNIX服务器
Superdome服务器主要面向大型互联网企业、互联网服务提供商,以及开发电子商务战略,需要处理大量数据的企业。
Superdome是惠普公司在继V系列之后推出的第一款支持64个及可无限扩展微处理器的服务器,可以同时支持PA-RISC和IA64处理器。64个CPU的一款可支持256GB内存,I/O插槽最多可达192个。Superdome提前做好了开放系统的集成工作,可在同一台系统上分区,运行HP UX-11i、Linux、MPE和Windows NT;性能可以通过硬件物理分区、多级分区、软件虚拟分区和综合动态分区等功能获得提高。惠普为Superdome制定了全新的销售定价方式和服务模式-“全面客户服务模式”。Superdome的客户将得到惠普公司的易做图解决方案,使客户在系统革新、建设、运行和发展升级四个使用阶段中都能全程享受到惠普提供的支持服务。
IBM p系列680服务器
p系列680服务器是IBM最强大的UNIX对称多处理器系统,在处理众多不同的关键电子商务应用(包括Web serving和hosting、ERP、 SCM、CRM等等)上尤为出色。680中配备的微处理器采用了绝缘硅(SOI)技术。该技术通过在芯片电路上涂上一层绝缘体,降低了电流发热。芯片热度的降低不仅可以提高运行速度,还可以减少运行错误,或系统崩溃的机率。680配备的CPU运行频率为600MHz,每一枚微处理器的缓存容量为16MB,系统内存容量为96GB,SMP配置最多可达4个6路处理器模块。
Sun Enterprise 10000服务器
Sun Enterprise 10000运行在Solaris操作环境下,对于基于主机的或客户机/服务器的各类应用,如在线交易处理、决策支持系统、数据仓库、通信服务或多媒体服务等,它都是理想的通用服务器或数据服务器。
Sun E10000脱胎于CRAY的CS6400,是第一个具有硬件分区(Hard Partition)功能的UNIX高端服务器,同时也是第一个达到64路SMP计算的UNIX单机。它采用Sun UltraSPARCII 400MHz处理器,最多可配置64个CPU,最大内存容量为64GB,可以实现最多16个分区(或称为域),在线磁盘存储容量可达64TB,具有动态重组特性(可提供在线服务能力)和动态系统域特性。通过在系统的核心部位采用Gigaplane-XB互连,提供的数据带宽可达到每秒12.8GB。
SGI Origin 3000服务器
SGI Origin 3000高性能服务器新产品采用SGI NUMAflex结构,即SGI新型模块化计算结构或称为第三代NUMA架构。SGI 3000服务器可以从两个64位的MIPS RISC CPU的最低配置扩展到512个CPU的共享存储的多处理器系统。另外,SGI的InfiniteReality3图形子系统也可以集成到该结构中。
第三代NUMA服务器采用模块化设计,7种基本模块分别是CPU扩展模块、磁盘存储器扩展模块、基本的I/O模块、PCI扩展模块、路由器互联模块、XIO扩展模块和图形扩展模块。模块化设计使系统配置更加灵活,更加经济高效,并具有很高的容错性和系统扩充性,能为客户提供可靠的总体投资保护和卓越的性能。
作者:陈志红、海纳