1977年,dec公司推出了以vax为结点机的松散耦合机群系统,并成功地将vms操作系统移植到该系统上。进入90年代后,随着risc技术的发展运用和高性能网络产品的出现,机群系统在性能价格比、可扩展性、可用性等方面都显示出了很强的竞争力。它尤其在对现有单机上的软硬件产品的继承和对商用软硬件最新研究成果的快速运用这两方面,表现出传统mpp无法比拟的优势。

  何谓机群

  机群是由一组计算机系统(结点)通过高性能网络或局部网互联而形成的具有单一系统映像(single system p_w_picpath)的高可用、高性能、高可扩展性的计算机集群系统。

  机群具有以下几个特征:

  ●构成系统的每一个结点都是完整的商用计算机系统。结点机可以是高档pc、工作站,也可以是smp,每个结点机上都安装一份完整的操作系统。

  ●连接各结点的互联网络提供结点间高性能、高可靠性和可扩展的通信服务。人们将这种网络称为系统域网(system area network),简称san。这种网络通常作为结点计算机的i/o设备,通过网络接口卡(network interface,简称ni)连接到结点机的i/o总线上(少数是内部系统总线)。

  ●整个系统呈现给用户的是单一系统映像(single system p_w_picpath,简称ssi)。系统中所有分布的资源被组织成一个统一的整体由用户管理和使用,用户感受不到单个结点计算机的存在。从用户的角度看,一个机群系统就如同一个具有巨大配置的单一计算机系统。

  ●整个系统具有可扩展性(scalability)。一般讲,一个系统(包括软硬件)可扩展是指通过方便地增加或升级一个系统的现有资源,使其满足人们对性能和功能的更高需求,包括资源可扩展、时间可扩展、性能可扩展、软件可扩展等诸多方面。

  ●整个系统具有高可用性(availability)。由于机群系统中的每个结点都是一个完整的计算机系统,都有一个完整的操作系统映像,因此一个或几个结点的崩溃不会导致整个系统停机。这个系统可以降级使用,直至崩溃的结点得到修复。

  一个典型机群系统的体系结构如图1所示。

  

  图1 机群系统体系结构

  linux对机群的优势

  linux作为一个新兴的操作系统,以它为平台来构建机群有很多优点:

  1. 廉价

  与windows以及其它商品化unix操作系统相比,linux一个显而易见的优势就是它极其廉价。硬件的花销加上很少的软件费用就可以拥有一个pc工作站或服务器,这方面显然是其它操作系统无法比拟的。而且linux对于硬件的要求比windows要低得多。一般的用户也可以利用linux来构造一个高性能的机群来进行科学计算、实验。在很大程度上,它可以替代以往昂贵的大型计算机。

  2. 自由开放

  自由开放是linux的一个最迷人的特点。linux的开发者从linus 等寥寥几个人已发展到全世界将近一千万人的庞大用户群。linux并不仅仅是给用户提供了更多的选择,更重要的是它宽阔的胸怀征服了那些好奇、上进、富于创造精神和协作精神的电脑爱好者。

  而开放源码为提高性能提供了更加广阔的空间。开发者可以看到这个系统是怎样跑起来的,然后可以在操作系统一级进一步提高性能。而像在windows或者aix这样的操作系统中,得到它们的源码已是很不容易,要想舒舒服服地从操作系统着手来优化上层的大型应用更是难上加难。

  3. 高效

  目前,还比较缺乏对linux的性能和功能系统科学的评价。在同等硬件配置和应用环境下,linux与其它操作系统相比孰优孰劣还不太明了。但是,已经有不少数据说明作为工作站或小型服务器,linux已经可以与它的对手们一较高低了。尤其是它的网络性能以及可靠性都倍受称赞。这些正是一个高效机群不可缺少的。

  linux环境下比较有影响力的机群系统就要属beowulf机群了。

  beowulf机群

  beowulf(发音为bay oh wolf或者bee oh wolf,这个词来自于传说中斯堪的纳维亚人中一个英雄的名字)机群的研究是由美国国家航空航天局(nasa)于1994年上半年发起的。1994年夏天,thomas sterling和don becker等人构建了一台由以太网连接的拥有16个dx4处理器的机群。他们把这个机群计算机叫做beowulf。它主要用来进行地球、空间科学的研究。beowulf的主要目的是使用普通的、相对廉价的计算机构建能够处理繁重计算的机群。此后,beowulf的思想迅速被世界上许多其它的研究机构认同和接受。beowulf机群的研究也热火朝天地开展起来。

  关于究竟什么样才能叫做一个真正的beowulf机群,目前还没有定论。就像我们前面提到的机群体系结构那样,beowulf机群通常由服务结点(server node)、成员结点(client node)通过以太网或者其它网络连接构成。

  在beowulf机群上运行的软件是linux、pvm和mpi。一般的,由服务结点来控制整个机群。这个服务结点是机群的控制台和对外的网关。在规模比较大的beowulf机群中有可能出现多个服务结点。比如,专门使用机群中的一个结点来做控制台或统计整个机群的运行状态。通常,beowulf机群中的成员结点都是哑成员,也就是说它们不与外界交互。成员结点由服务结点来管理,做服务结点给它们分配的任务。

  beowulf机群中的成员结点以及内部连接是机群专用的。从这一点来看,beowulf更像是一台完整的机器,而不是一个有许多计算机组成的松散的群体。就像cpu和内存可以方便地安装到主板上一样,beowulf的结点作为内置的模块插入beowulf机群中。beowulf机群中结点之间的连接(通常是高速网络,比如fastethernet、atm、myrinet等)也是内部专用的。这些特点使得beowulf机群中的负载均衡以及结点之间的信赖关系变得更容易处理,因为它们不受外界的影响。

  beowulf并不是一个软件包、一种新的网络拓扑结构或者内核技术,它是一种使用跑linux的机器来构建并行虚拟机的思想。尽管有很多软件(比如一些内核的修改、pvm和mpi并行运算库或者一些管理工具)可以使beowulf体系结构更快、更容易管理和使用,但我们仍然可以只使用linux来建造一个自己的beowulf机群。一个最简单的beowulf机群可以由两台互相连接并且拥有一些信任关系(比如nfs和rsh权限)的linux计算机组成。

  beowulf机群的构造

  撇开并行应用本身不谈,跟任何机群一样,beowulf的性能取决于下面几个因素:结点本身、结点之间互联设备、底层通信软件(包括互联设备的驱动)、全局资源管理系统以及并行计算环境(pvm或mpi)等。

  对于给定的应用问题,在结点数一定的条件下,则由以下三个方面的因素来决定并行处理的速度。首先是应用问题求解的算法,其次是处理结点软硬件的速度,另外通信性能也是一个因素。下面,我们将着重介绍高性能机群的通信子系统:底层互联设备、底层通信软件以及并行计算环境。从表1可以看到,这几个部分对于整个机群的性能来说都是非常重要的。

  1.底层互联网络

  在机群系统中,分布在各个结点上的进程之间通常有大量的信息要交换,这都要通过互联网络来实现。因此,互联网络性能的优劣会直接影响信息交换的速率和效率,进而影响整个机群系统的整体性能。

  理想状态下互联网络应该具有以下特征:

  ●较短的通信延时(latency)

  ●较高的通信带宽(bandwidth)

  ●极小的错误率(error rate)

  ●较好的可扩展性(scalability)

  机群中经常使用的互联设备有快速以太网、atm网络、myrinet以及专用的mesh网络等等。

  2.底层通信软件

  底层通信软件是机群通信效率高低的关键。在这一层所要关心的问题是协议问题。tcp/ip协议是internet采用的协议标准,它用来把各种各样异构的机器连接起来,组成一个实际的计算机网络。这种强大的兼容性却往往需要以效率作为代价。比如说,用户的消息从发送方到接收方一般要经过多次拷贝(比如从发方用户空间拷贝到核心空间,从核心空间拷贝到接收方用户空间以及中间进行差错校验,重发机制等等带来的拷贝)。而统计表明,每增加一次拷贝,通信的效率就会降低至少20%。而在机群中,就采用一些专门的技术来解决这些问题。比如用户级通信技术用来减少通信软件进入操作系统核心的次数,零拷贝技术减少消息通路上的拷贝次数等等。

  由于要涉及到很多细节问题,笔者不再一一赘述。

  3.网络并行计算软件

  有了高速网络和简洁高效的底层协议,机群并行计算软件的任务就是在提供完备的并行计算语义的情况下,尽量地把底层物理性能提供给上层的并行应用。下面我们将简要介绍一下机群(包括beowulf)中最流行的两个并行计算环境pvm 和mpi。

  PVM

  pvm(parallel virtual machine)是由美国 tennessee大学、oak ridge国家实验室等研制的并行程序开发环境。它可以把多个异构的计算机组织起来成为一个易于管理的、可扩展的、易编程使用的并行计算资源。它的各个计算结点可以是共享存储或分布式存储的多处理机、向量超级计算机、专用的图形、标量工作站。这些异构的计算结点可以通过多种网络(比如ethernet、fddi等等)互联,成为一个网络计算虚拟机。用户的计算任务被分配到各个计算结点上,多个结点并行运算,从而实现粗粒度的并行。

  pvm的免费、开放以及易用使其成为一个被广泛接受的并行程序开发环境。有很多并行机公司都宣布支持pvm。pvm 可以安装到各种unix、windows操作系统上运行。所有这些又有力地促进了pvm的推广。现在所有的并行机都支持pvm。

  PVM有下列特点:

  ①pvm是一个可以运行在异构硬件环境的编程环境。在pvm的虚拟机中,结点可以是intel的x86系列的微机,也可以是sun公司的sparc工作站或者其它。结点上的操作系统可以是unix,也可以是windows系列。pvm建立在tcp/ip这个专用于internet通信协议之上,从而可以在异构的结点之间进行通信。pvm还为不同格式的数据表示提供了与结点机类型无关的数据表示格式xdr(external data representation)。这样,当虚拟机中的两台结点机具有不同的内部数据格式时,pvm就通过xdr编码来实现它们之间的数据格式转换。这种良好的兼容性使得用户可以利用他手头上几乎所有的计算资源来组成一个并行环境,从而使pvm虚拟机很廉价。价格低廉和易于使用使得pvm很快得到广泛的应用

  ②pvm的许多函数的语义是很自由的。

  一方面,pvm的集合操作(collective operation)或者又叫组操作语义非常自由。它甚至允许一个组中的部分成员进行同步。

  另一方面,pvm的进程管理也是动态的。在虚拟机运行过程中,一个进程可以建立自己的子进程。所以pvm虚拟机中有几个进程,在运行时是不知道的,虽然编制pvm应用程序的用户自己可能清楚。这也给pvm虚拟机的进程管理带来一些不利的影响。

  ③pvm的消息传递语义比较简单。

  pvm的消息传递函数很简单。对于通信,它只把通信分为阻塞和非阻塞两种。而mpi的消息传递函数就非常丰富。mpi的阻塞与非阻塞的消息传递都分为标准模式(standard)、缓冲模式(buffered)、同步模式(synchronous)以及预备模式(ready)。

  简单的通信语义使pvm容易使用,但却不利于在不同的情况下取得理想的性能。

  MPI

  mpi是并行计算机的消息传递接口标准。指定该标准的主要目的是为了提高并行程序的可移植性和使用的方便性。有了统一的标准,并行计算环境下的应用、软件库以及软件工具就都可以透明地移植。各个厂商可以依据标准提供独具特点和优势的软件实现和硬件支持,从而提高并行处理的能力。

  mpi没有简单地指定某系统为标准,而是吸取许多已经广泛应用的消息传递系统的特点。它在采纳已有系统优点的基础上,增加了许多新的特点,从而使其成为非常有吸引力的标准。

  同PVM相比,MPI有下列特点:

  ①mpi只是一个支持并行计算的程序库,并不是一个并行操作系统。而pvm却有了并行操作系统的雏形。它有自己的资源管理系统。用户可以自由地增加、删除结点,自由地衍生新进程,用户可以定义选择衍生新进程所在结点的策略等等。这些复杂的资源管理由pvmd来完成。

  ②pvm支持异构的机群。而mpi标准虽然也可以支持异构机群,但是它并没有强制性地要求每个厂商都提供支持异构的实现。

  ③mpi的语义更精确。作为一个标准,它也必须有完备而精确的语义。因此,我们在mpi程序库中能够找到各种各样的发送和接收语义。反观pvm,它在不少方面就不是那么精确。

  ④作为一种消息传递界面标准,mpi没有严格要求底层的通信协议。它只是对于应用程序的通信程序库。至于下层的硬件,协议完全由厂商自己决定。这就为取得高效的通信效率提供了广阔的空间。近几年来,高性能的通信硬件不断地被投入使用,新颖的底层通信协议被设计出来。由于mpi的模块化和与底层协议无关性,使得mpi可以很快在这些底层协议中实现,从而取得很好的性能指标。而pvm是以tcp/ip为基础的,并且消息传递接口与实现浑然一体,这样就不太容易采用新的高效底层通信协议。

  我们简要介绍了机群的概念、beowulf机群以及机群中比较重要的几个模块。正是由于linux的种种优势,各种研发机构往linux机群投入越来越多的精力。linux必将在这个领域有所成就。

  下面是关于linux机群的一些有代表性站点,有兴趣的读者可以访问它们得到更多的信息:

  http://www.beowulf.org/

  http://cluster.cecs.csulb.edu/

  http://www.cwp.mines.edu/

  http://gasnet.med.yale.edu/lamdi/

  http://www.uk.linux.org/smp/title.html

  http://www.mosix.org

  http://yara.ecn.purdue.edu/~pplinux

  http://setiathome.ssl.berkeley.edu/

  http://www.cs.princeton.edu/shrimp/

  赵鹏 http://media.ccidnet.com/media/ciw/939/d1001.htm 中国计算机报