Linux中网络并行计算方法介绍
1977年,DEC公司推出了以VAX为结点机的松散耦合的集群系统,并成功地将VMS操作系统移植到该系统上。20世纪90年代后,随着RISC技术的发展运用和高性能网络产品的出现,集群系统在性能价格比(Cost/Performance)、可扩展性(Scalability)、可用性 (Availability)等方面都显示出了很强的竞争力,尤其是它在对现有单机上的软硬件产品的继承和对商用软硬件最新研究成果的快速运用,从两方面表现出传统MPP无法比拟的优势。
目前,集群系统已在许多领域获得应用。可以预见,随着 SMP产品的大量使用和高性能网络产品的完善以及各种软硬件支持的增多和系统软件、应用软件的丰富,新一代高性能集群系统必将成为未来高性能计算领域的一种主流平台。具有代表性的集群系统有IBM的SP2、SGI的POWER CHALLENGEarray、Microsoft的 Wolfpack、DEC的TruClusters、SUN的SPARCcluster 1000/2000PDB以及Berkeley NOW 等,中国国家智能计算机研究开发中心的曙光-1000A、曙光-2000I和曙光-2000II也都属集群系统。
什么是Beowulf?
集群已经成为现在各高性能计算机厂商的研究热点。据统计,在全球计算能力最强大的500台计算机当中,集群所占的比重从1997年到1999年依次为1台、2台和76台。集群研究的发展势头可见一斑。
Linux作为一个新兴的操作系统,以它为平台来构建集群有很多优点:
1. 廉价:与Windows以及其它商品化Unix操作系统相比,Linux的一个显而易见的优势就是廉价。硬件的花销加上很少的软件费用就可以拥有一个PC工作站或服务器,这方面显然是其它操作系统无法比拟的。而且Linux对于硬件的要求比Windows要低得多。一般的用户也可以利用Linux来构造一个高性能的集群来进行科学计算、实验,在很大程度上它可以替代以往昂贵的大型计算机。
2. 自由开放:自由开放是Linux的一个最迷人的特点。 Linux的开发者从Linus 等寥寥几人发展到全世界将近1000万的庞大用户群,其扩张速度令人刮目。Linux并不仅仅是给用户提供了更多的选择,更重要的是它宽阔的胸怀征服了那些好奇、上进、富于创造精神和协作精神的电脑爱好者。
而开放源码为提高性能提供了更加广阔的空间。开发者可以看到这个系统是怎样跑起来的,然后在操作系统一级进一步提高性能便成为可能。而在Windows或者AIX这样的操作系统中,得到它们的源码已是很不容易,要想舒舒服服地从操作系统着手来优化上层的大型应用更是难上加难。
3. 高效:目前,由于还比较缺乏对Linux的性能和功能评价的系统科学研究,在同等硬件配置和应用环境下,Linux与其他操作系统相比孰优孰劣还不太明了。但是,已经有不少数据说明,作为工作站或小型服务器,Linux已经可以与它的对手一较高低了,尤其是它的网络性能以及可靠性都备受称赞,而这些正是一个高效集群不可缺少的。
Linux环境下的集群系统中比较有影响力的要属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 的初衷是使用成熟的大众化的配件来构建集群,现在也有人把为了提高性能而使用了一些专用部件(比如专用的高速互联网络等等)的集群叫做Beowulf集群。
在Beowulf集群上运行的软件是Linux、PVM和MPI。一般由服务节点来控制整个集群。这个服务节点是集群的控制台和对外的网关。在规模比较大的Beowulf集群中有可能出现多个服务节点。比如,专门使用集群中的一个节点来做控制台或统计整个集群的运行状态。通常,Beowulf集群中的成员节点都是哑成员,也就是说,它们不与外界交互。成员节点由服务结点来管理,做服务节点给它们分配的任务。
Beowulf集群与加州大学Berkley分校进行的NOW (Network Of Workstations)项目的研究有非常微妙但却很重要的区别。
Beowulf集群中的成员节点以及内部连接是集群专用的。从这一点来看,Beowulf更像是一台完整的机器,而不是一个由许多计算机组成的松散的群体。大多数集群的节点并没有键盘、显示器等,只是通过远程登录来访问控制它们。就像CPU和内存可以方便地安装到主板上一样,Beowulf的节点作为内置的模块插入 Beowulf集群中。Beowulf集群中的节点之间的连接(通常是高速网络,比如Fast Ethernet、 ATM、 Myrinet等)也是内部专用的。它与集群与外界连接的普通网络相隔离。这些特点使得Beowulf集群中的负载均衡以及结点之间的信赖关系变得更容易处理,因为它们不受外界的影响。而且结点之间的通信也会高效许多。
Beowulf并不是一个软件包,一种新的网络拓扑结构或者内核技术。它是一种使用跑Linux的机器来构建并行虚拟机的思想。尽管有很多软件(比如一些内核的修改,PVM和MPI并行运算库或者一些管理工具)可以使Beowulf体系结构更快,更容易管理和使用,但我们仍然可以只使用Linux来建造一个自己的Beowulf集群。一个最简单的Beowulf集群可以由两台互相连接并且拥有一些信任关系(比如NFS 和rsh权限)的Linux计算机组成。