SMPCluster的比较

1.             引言

以高性能计算机为基础的计算科学已经成为继理论科学和实验科学之后人类科学研究的第三大支柱,在一些新兴的学科,如新材料技术和生物技术领域,高性能计算机已成为科学研究的必备工具。同时,高性能计算也越来越多地渗透到石油工业等一些传统的产业之中,以提高生产效率、降低生产成本。高性能计算系统作为战略资源对一个国家的科技发展越来越重要。已经有越来越多的教育及经济部门使用高性能计算机,如研究空气动力、凝聚态物理、量子化学、石油勘探、机械设计、金融分析及生物制药等。

然而很多用户在挑选高性能计算机方面还是存在很多疑问,这其中最突出的问题就是SMPCluster的取舍问题。我们在这里谈一下关于SMPCluster之间的区别。

 

2.             SMP

SMP的全称是"对称多处理"Symmetrical Multi-Processing)技术,是指在一个计算机上汇集了一组处理器(CPU),CPU之间共享内存子系统以及总线结构。它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台电脑不再由单个CPU组成,而同时由多个处理器运行操作系统的单一复本,并共享内存和一台计算机的其他资源。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有的处理器都可以平等地访问内存、I/O和外部中断。在对称多处理系统中,系统资源被系统中所有CPU共享,工作负载能够均匀地分配到所有可用处理器之上。

 

    我们平时所说的双CPU系统,实际上是对称多处理系统中最常见的一种,通常称为"2路对称多处理",它在普通的商业、家庭应用之中并没有太多实际用途,但在专业制作,如3DMax StudioPhotoshop等软件应用中获得了非常良好的性能表现,是组建廉价工作站的良好伙伴。随着用户应用水平的提高,只使用单个的处理器确实已经很难满足实际应用的需求,因而各服务器厂商纷纷通过采用对称多处理系统来解决这一矛盾。在国内市场上这类机型的处理器一般以4个或8个为主,有少数是16个处理器。但是一般来讲,SMP结构的机器可扩展性较差,很难做到100个以上多处理器,常规的一般是8个到16个。这种机器的好处在于它的使用方式和微机或工作站的区别不大,编程的变化相对来说比较小,原来用微机工作站编写的程序如果要移植到SMP机器上使用,改动起来也相对比较容易。SMP结构的机型可用性比较差。因为4个或8个处理器共享一个操作系统和一个存储器,一旦操作系统出现了问题,整个机器就完全瘫痪掉了。而且由于这个机器的可扩展性较差,不容易保护用户的投资。但是这类机型技术比较成熟,相应的软件也比较多,因此现在国内市场上推出的并行机大量都是这一种。PC服务器中最常见的对称多处理系统通常采用2路、4路、6路或8路处理器。目前UNIX服务器可支持最多64CPU的系统,如Sun公司的产品Enterprise 10000SMP系统中关键的技术是如何更好地解决多个处理器的相互通讯和协调问题。

 

    要组建SMP系统,首先关键的一点就是需要合适的CPU相配合。我们平时看到的CPU都是单颗使用,所以看不出来它们有什么区别,但是,实际上,支持SMP功能并不是没有条件的,随意拿几块CPU来就可以建立多处理系统那简直是天方夜谈。要实现SMP功能,我们使用的CPU必须具备以下要求:

 

    1CPU内部必须内置APICAdvanced Programmable Interrupt Controllers)单元。Intel 多处理规范的核心就是高级可编程中断控制器(Advanced Programmable Interrupt Controllers--APICs)的使用。CPU通过彼此发送中断来完成它们之间的通信。通过给中断附加动作(actions),不同的CPU可以在某种程度上彼此进行控制。每个CPU有自己的APIC(成为那个CPU的本地APIC),并且还有一个I/O APIC来处理由I/O设备引起的中断,这个I/O APIC是安装在主板上的,但每个CPU上的APIC则不可或缺,否则将无法处理多CPU之间的中断协调。

    2、相同的产品型号,同样类型的CPU核心。例如,虽然AthlonPentium III各自都内置有APIC单元,想要让它们一起建立SMP系统是不可能的,当然,即使是CeleronPentium III,那样的可能性也为0,甚至Coppermine核心的Pentium IIITualatinPentium III也不能建立SMP系统--这是因为他们的运行指令不完全相同,APIC中断协调差异也很大。

    3、完全相同的运行频率。如果要建立双Pentium III系统,必须两颗866MHz或者两颗1000MHz处理器,不可以用一颗866MHz,另一颗1000MHz来组建,否则系统将无法正常点亮。

    4、尽可能保持相同的产品序列编号。即使是同样核心的相同频率处理器,由于生产批次不同也会造成不可思议的问题。两个生产批次的CPU作为双处理器运行的时候,有可能会发生一颗CPU负担过高,而另一颗负担很少的情况,无法发挥最大性能,更糟糕的是可能导致死机,因此,应该尽可能选择同一批生产的处理器来组建SMP系统。

 

3.             Cluster

Cluster,中文名称为集群,也称机群、群集,通俗地说,集群是这样一种技术:它至少将两个系统连接到一起,使两台服务器能够像一台机器那样工作或者看起来好像一台机器。采用集群系统通常是为了提高系统的稳定性和计算中心的数据处理能力及服务能力。

Cluster集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任系统上运行的服务可被所有的网络客户所使用。Cluster必须可以协调管理各分离的组件的错误和失败,并可透明地向Cluster中加入组件。一个Cluster包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。Cluster内各节点服务器通过内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上的任一故障发生时,客户都将能很快连接到新的应用服务上。

    举个例子来说,我们架设了一台服务器,用来进行计算,然而随着时间的推移,用户越来越多,计算请求越来越多,计算模型越来越大、越来越精细,计算量越来越大,这时服务器的负载也就越来越高。这种情况下,我们就必须提升服务器的能力,以满足以益增长的计算要求。这时,我们就面临两种选择:

    1)升级服务器,采用更快的CPU,增加更多的内存,使其具有更强的性能;但日益增长的计算量又会使服务器再次过载,需要再次升级,这样就陷入了升级的怪圈。还有,升级时还得考虑到服务如何接续,能否中止!

    2)增加服务器,让多台服务器来完成相同的服务。

    第二种方法就是服务器集群,简而言之,就是一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。一个服务器集群包含多台拥有共享数据存储空间的服务器,各服务器之间通过内部局域网进行相互通信;当其中一台服务器发生故障时,它所运行的应用程序将由其他的服务器自动接管;在大多数情况下,集群中所有的计算机都拥有一个共同的名称,集群系统内任意一台服务器都可被所有的用户所使用。在集群系统中运行的服务器并不一定是高档产品,但服务器的集群却可以提供相当高性能的停机服务;每一台服务器都可承担部分计算任务,并且由于群集了多台服务器的性能,因此,整体系统的计算能力将有所提高;同时,每台服务器还能承担一定的容错任务,当其中某台服务器出现故障时,系统可以在专用软件的支持下将这台服务器与系统隔离,并通过各服务器之间的负载转移机制实现新的负载平衡,同时向系统管理员发出报警信号。

    目前,常用的服务器集群方法,是将多台服务器连接,这些服务器一起分担同样的应用和数据库计算任务,改善关键大型应用的响应时间。同时,每台服务器还承担一些容错任务,一旦某台服务器出现故障时,系统可以在系统软件的支持下,将这台服务器与系统隔离,并通过各服务器的负载转嫁机制完成新的负载分配。

    在集群系统中,集群内任一系统上运行的服务可被所有的网络客户所使用。集群可以协调管理各分离组件的错误和失败,并可透明的向集群中加入组件。用户的公共数据被放置到了共享的磁盘柜中,应用程序被安装到了所有的服务器上,也就是说,在集群上运行的应用需要在所有的服务器上安装一遍。当集群系统在正常运转时,应用只在一台服务器上运行,并且只有这台服务器才能操纵该应用在共享磁盘柜上的数据区,其它的服务器监控这台服务器,只要这台服务器上的应用停止运行(无论是硬件损坏、操作系统死机、应用软件故障,还是人为误操作造成的应用停止运行),其它的服务器就会接管这台服务器所运行的应用,并将共享磁盘柜上的相应数据区接管过来。其接管过程如下图所示(以应用A为例):

    1.应用A正常工作时;

 

    2.应用A停止工作后,其它的备用服务器将该应用接管过来。

    具体接管过程分三部执行:

    a.系统接管

    b.加载应用

    c.客户端连接

    集群系统的优势在于以下几点:

l        可以采用现成的通用硬件设备或特殊应用的硬件设备,研制周期短;

l        可实现单一系统映像,即操作控制、IP登录点、文件结构、存储空间、I/O空间、作业管理系统等等的单一化;

l        高性能(因为CPU处理能力与磁盘均衡分布,用高速网络连接后具有并行吞吐能力);

l        高可用性,本身互为冗余节点,能够为用户提供不间断的服务,由于系统中包括了多个结点,当一个结点出现故障的时候,整个系统仍然能够继续为用户提供服务;

l        高可扩展性,在集群系统中可以动态地加入新的服务器和删除需要淘汰的服务器,从而能够最大限度地扩展系统以满足不断增长的应用的需要; 

l        安全性,天然的防火墙;

l        资源可充分利用,集群系统的每个结点都是相对独立的机器,当这些机器不提供服务或者不需要使用的时候,仍然能够被充分利用。而大型主机上更新下来的配件就难以被重新利用了;

l        具有极高的性能价格比,和传统的大型主机相比,具有很大的价格优势;

    集群系统的不足之处在于:

    我们知道集群中的应用在一台服务器上运行,如果这个应用出现故障,其它的某台服务器会重新启动这个应用,接管位于共享磁盘柜上的数据区,进而使应用重新正常运转。我们知道整个应用的接管过程大体需要三个步骤:侦测并确认故障、后备服务器重新启动该应用、接管共享的数据区。因此在切换的过程中需要花费一定的时间,原则上根据应用的大小不同切换的时间也会不同,越大的应用切换的时间越长。

 

4.             Cluster的互联

网络是集群关键的部分.它的容量和性能直接影响了整个系统对高性能计算(HPC)的适用性。根据我们的调查,大多数高性能科学计算任务都是通信密集型的,因此如何尽可能的缩短节点间的通信延迟和提高吞吐量是一个核心问题。

4.1  快速以太网

快速以太网是运行于UTP或光缆上的100Mb/S的高速局域网的总称。由于TCP/IP运行时对CPU的占用较多,并且理论上的传输速度和延迟都比较差,现在我们在HPC集群中计算网络的选择上基本不考虑这个方案了。

4.2 千兆以太网(Giganet

Giganet 是用于 Linux 平台的虚拟接口 (VI) 体系结构卡的第一家供应商,提供 cLAN 卡和交换机。VI 体系结构是独立于平台的软件和硬件系统,它由 Intel 开发,用于创建群集。它使用自己的网络通信协议在服务器之间直接交换数据,而不是使用 IP,并且它并不打算成为 WAN 可路由的系统。Giganet 产品当前可以在节点之间提供 1 Gbps 单向通信,理论最小延迟为 7 微秒,实测延迟为50-60微秒左右,并且运行时对CPU的占用也比较大。

4.3  IEEE SCI

IEEE 标准 SCI 的延迟更少(理论值1.46微秒, 实测值3-4微秒),并且其单向速度可达到 10Gb/秒, InfiniBand 4X的理论值一样。SCI 是基于环拓扑的网络系统,不像以太网是星形拓扑。这将使在较大规模的节点之间通信速度更快。更有用的是环面拓扑网络,它在节点之间有许多环形结构。两维环面可以用 n m 的网格表示,其中在每一行和每一列都有一个环形网络。三维环面也类似,可以用三维立体节点网格表示,每一层上有一个环形网络。密集超级计算并行系统使用环面拓扑网络,为成百上千节点之间的通信提供相对最快的路径。

4.4  Myrinet互连技术

    Myrinet 提供网卡和交换机,其单向互连速度最高可达到 1.28 Gbps。网卡有两种形式,铜线型和光纤型。铜线型 LAN 可以在 10 英尺距离内以全速进行通信,而在长达 60 英尺距离内以半速进行操作。光纤型 Myrinet 可以在 6.25 英里长的单模光纤或者 340 英尺长的多模光纤上全速运行。Myrinet 只提供直接点到点、基于集线器或基于交换机的网络配置,但在可以连接到一起的交换光纤数量方面没有限制。添加交换光纤只会增加节点间的延迟。两个直接连接的节点之间的平均延迟是 5 18 微秒,比以太网快。

由于Myrinet板上集成可编程微处理器,能满足一些研究者的特定需要。

4.5  InfiniBand互连技术

    InfiniBand 是由 InfiniBand 协会开发的体系结构技术,它是一种用于实现基于通道的交换式技术的通用I/O规范。由于IB的理论带宽极高——30Gbit/S, 因此备受业内关注。

InfiniBand 的解决方案包括一个连接多个独立处理器和I/O平台的系统区域网络,它所定义的通信和管理结构同时支持I/O和处理器与处理器之间的通信。InfiniBand 系统可以是只有少量I/O设备的单处理器服务器,也可以是大型的并行超级计算机。

InfiniBand 规范定义了3个基本组件:

 一个主机信道适配器(HCA 

 一个目标信道适配器(TCA

 一个网络交换机

    InfiniBand技术通过连接HCAsTCAs、交换机和路由器而发挥作用(见下图)。位于页节点的InfiniBand设备是产生和使用信息包的信道适配器。

    HCA TCA 可以提供一个无需CPU干预的高可靠端-至-端连接。HCA驻留在处理器节点并提供从系统内存到 InfiniBand 网络的通路。它也有一个可编程的直接内存访问(DMA)引擎。该引擎具有特殊保护和地址翻译特性,从而使DMA操作可以本地进行或者通过另一个HCATCA远程进行。

TCA驻留在I/O单元,并提供I/O设备(如一个磁盘驱动器)或I/O网络(如以太网或光纤通道)与 InfiniBand 网络的连接。它实现了 InfiniBand 协议的物理层、链接层和传输层。

交换机放置在信道适配器之间。它们使几个甚至几千个 InfiniBand 页节点可以在任意位置互连进一个单一网络,该网络同时支持多个连接。交换机既不产生,也不使用信息包。它们只是根据信息包中路由器报头的目的地地址,将其传送过去。交换机对于节点而言是透明的,同时信息包完整无损地经过交换机网。

    与目前的通信协议如TCP/IP相比,InfiniBand技术的一个主要变化是 InfiniBand 硬件承担了原来由CPU完成的许多I/O通信工作,因此在处理并发的多路通信任务时没有现有通信协议所固有的额外开销。在无需系统核心层介入的情况下,它就能够提供零数据拷贝的传输,并使用硬件提供高可靠性和容错性的通信,最终改善了系统的带宽、延迟和可靠性等问题。

 

5.             对比列表

总结以上我们可以做出下面这张关于SMPCluster的对比表

 

Cluster

SMP

概念

Cluster集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。

SMP的全称是"对称多处理"Symmetrical Multi-Processing)技术,是指在一个计算机上汇集了一组处理器(CPU),CPU之间共享内存子系统以及总线结构。

扩展性

可以任意添加删除节点

不可以任意添加删除CPU

容错性

优,当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。

差,因为4个或8个处理器共享一个操作系统和一个存储器,一旦操作系统或存储器出现了问题,整个机器就完全瘫痪掉了。

通讯

数据传输主要通过InfinibandMyrinet,千兆以太网

CPU数量比较少的时候,通讯能力比Cluster

节点增长对性能的影响

在采用高性能通讯网络的前提下,增加节点数目对系统性能有非常明显的提升

由于处理器间通讯需要消耗额外的计算能力,并且对计算能力的消耗随着CPU数目的增加,消耗量呈非线性增长,所以CPU数目越多,额外的CPU所能带来的性能的增长越小

故障几率

单个节点出现故障的几率并不高,但随着节点数越多,出现故障的几率越高,但是单个节点的故障并不会影响整个集群的使用

出现故障的几率比较低,一旦出现故障,则SMP不能使用

操作系统

成本低甚至是免费的

须使用厂商提供的操作系统

软件支持

国外一些科研机构提供了很多免费的代码,但是由于Cluster出现的时间比SMP晚,所以在软件支持方面暂时没有SMP全面

由于出现的时间比较早,所以获得的软件支持比较好,但是免费的软件比较少

硬件维护

比较开放,可以随意更换,无须完全依赖厂家

必须完全依赖厂家提供

价格

CPU数目超过4个后,价格大大低于同CPU数目的SMP

CPU数目超过4个后,价格是同CPU数目Cluster5~10

 

6.             总结

SMP由于其出现的比较早,各种应用支持比较完善,所以被大量的使用在电信、银行、金融、证券、气象、天文等传统行业。但是由于其高昂的价格以及较差的扩展性也限制了它的普及。

而集群系统在数值计算,数据处理及数据存储方面表现出的高性能足以和任何传统的网络服务器或超级计算机相比。其极低的价格使得许多用户能够利用这些性能,而且可以选择系统的大小以适应用户的需要。除此以外,集群计算机比传统的计算机更加可靠和易于维护。 集群系统还能将在一个处理器上运行失败的计算操作天衣无缝地转换到另外的处理器上。这项性能使得系统实现“零停机”成为可能。

正是因为集群系统有着以上的优势,所以它在网络服务,电子商务,应用服务(ASP),图像流,及文档资料存储的行业得到了迅速的发展。它也同样适合一些对计算能力要求高的特别领域、包括:油气勘探、医学成像、化学建模、图形合成、政府、以及教育领域。

综上所述,可能会给人感觉SMPCluster是两种完全不同的高性能计算机。随着计算机的发展,现在主流的Cluster中,节点机大多采用双CPU架构,这其实就是一台小型SMP。这就是SMPCluster系统完美的结合。