1 什么是Beowulf集群

Beowulf是现存的最古老的英语史诗:

Famed was this Beowulf: far ew the boast of him, son of Scyld, in the Scandian lands. So becomes it a youth to quit him well with his father's friends, by fee and gift, that to aid him, aged, in after days, come warriors willing, should war draw nigh, liegemen loyal: by lauded deeds shall an earl have honor in every clan.

它歌颂了一个英雄,他拥有强壮的体魄和无人伦比的勇气。他最终战胜了魔鬼Grendel. 你可以在http://legends.dm.net/beowulf/index.html找到这首史诗。

我们所说的Beowulf首先是一个象史诗中英雄一样强大的集群系统。在1994年夏季,Thomas Sterling和Don Becker在CESDIS(The Center of Excellence in Space Data and Information Sciences)用16个节点和以太网组成了一个计算机集群系统,并将这个系统命名为Beowulf。Beowulf集群。Beowulf集群提供了一种使用COTS(Commodity off the shelf)硬件构造集群系统以满足特殊的计算需求的方法。这里的COTS是指象PC和以太网这种广为应用的标准设备,它们通常可以由多家厂商提供,所以通常有很高的性价比。Beowulf集群这种方法很快从NASA传遍了整个科研机构和社团。实际上,Beowulf集群现在已被人们看作高性能计算中的一个分支或流派。

因为几乎每个Beowulf集群的设计者都有自己的Beowulf集群的定义,恐怕很难给Beowulf集群下一个确切的定义。一些人认为只有那些采用和原始的Beowulf集群系统一样方法构建的系统才叫Beowulf集群。而另一些人则认为凡是能够在多个工作站上运行并行代码的系统都称为Beowulf集群。这里我们只是列举多数Beowulf集群具有的特征作为Beowulf集群的定义:

  • Beowulf是一种系统结构,它使得多个计算机组成的系统能够用于并行计算。
  • Beowulf系统通常有一个管理节点和多个计算节点构成。它们通过以太网(或其他网络)连接。管理节点监控计算节点,通常也是计算节点的网关和控制终端。当然它通常也是集群系统文件服务器。在大型的集群系统中,由于特殊的需求,这些管理节点的功能也可能由多个节点分摊。
  • Beowulf系统通常由最常见的硬件设备组成,例如,PC、以太网卡和以太网交换机。Beowulf系统很少包含用户定制的特殊设备。
  • Beowulf系统通常采用那些廉价且广为传播的软件,例如,Linux操作系统、并行虚拟机(PVM)和消息传递接口(MPI)。

2 Beowulf集群的分类

由于一些特殊的目的如系统性能,有些Beowulf集群系统也采用一些用户定制的设备(它们通常由一家厂商提供)。为了区分这些特殊的系统,通常把Beowulf分为两大类:

2.1 第一类Beowulf集群(CLASS I Beowulf)

这一类Beowulf集群全部由COTS设备组成。第一类Beowulf系统的优点是:

  • 硬件设备由多个来源,通常具有廉价和易管理维护的特点。
  • 不依赖于单个硬件供应商
  • 所有设备驱动都由Linux开发社团提供
  • 通常都是标准设备,例如,SCSI、以太网等等

当然第一类Beowulf集群的缺点也是非常显然的。由于所采用的硬件都没有经过性能优化,所以其很难达到很好的性能。比如,由于以太网的高延迟和低带宽使得集群系统中消息传递很难达到MIMD应用的需求,从而使整个集群系统的计算能力大打折扣。

2.2 第二类Beowulf集群(CLASS II Beowulf)

第二类Beowulf集群是指那些采用了用户定制设备的Beowulf集群。这类集群系统最大优点是具有很好的性能。例如,采用Myrinet作为集群系统的IPC网络可以极大地提供进程间消息传递延迟和速度。当然它的缺点就是依赖于单个硬件提供商而且价格高昂。

不能说,哪一类集群绝对优于另一类集群。这依赖于你的集群系统的需求和预算。

3 Beowulf集群体系结构

如上所述,现实中存在形形色色的Beowulf集群。虽然它们都是原始Beowulf集群的衍生物,但是它们的体系结构也存在各种各样微小的差异。本文以IBM eServer Cluster 1300为例来阐述Beowulf集群体系结构和系统组成。

图1是Cluster 1300上Beowulf集群的系统视图

图1是Cluster 1300上Beowulf集群的系统视图。无论是管理节点(Master Node)和计算节点都是Intel IA32架构的xSeries PC服务器。它们通过网络(以太网和Myrinet)相连接。所有的节点都运行Linux操作系统。运行在计算节点上的并行应用程序采用MPI进行完成并行进程间的通信。计算节点通过管理节点和外部LAN相连。整个集群系统都在一套集群管理工具监控之下。

图 2 Cluster1300上Beowlf集群组件

图 2 是 Cluster 1300上Beowulf集群的组件视图。它揭示了Beowulf集群的组成部分。通常Beowulf集群由四个层次构成:

  • 硬件:主要是指Intel IA32架构的PC服务器。
  • 网络:指用于节点间通信的局域网(普通的以太网)和并行进程间通信的高速网(Myrinet等高速网)。
  • 软件:主要指Linux操作系统和用于并行通信的并行编程库(如MPI和PVM)。
  • 并行应用

本文的下面三个小节将分别介绍这四个层次。而本系列文章的后面两片将更详细的介绍它们。

3.1 Beowulf集群硬件和网络

Beowulf集群硬件和网络层次需要解决的问题是如何组织硬件使其达到最高的性价比。为了达到很好的性价比,Beowulf通常采用廉价的COTS硬件。当然有时为了提供某些关键的性能,也会使用一些特殊的设备。

从硬件组织的角度说,Beowulf集群中的节点都是非共享内存的计算机,它们通过消息传递进行通信。实际上,我们还有其他组织硬件完成并行计算的方式。

简单地说,有两种组织硬件完成并行计算的方法:

  • 通过消息传递通信的本地内存(非共享内存)计算机系统 (Beowulf集群)
  • 通过内存访问通信的共享内存计算机系统 (SMP计算机)

当然也存在将多个本地或共享内存计算机相连并创造一个混和的共享内存计算机系统的可能。但在最终用户看来,这种计算机系统就好像一个大型的共享内存计算机。这种技术被我们叫做非一致内存访问NUMA(Non Uniform Memory Access)。但是从底层说,一个NUMA计算机系统必须在节点间传递消息。

当然也可以将共享内存计算机作为一个本地内存的计算机连入一个Beowulf集群系统。由于Linux系统支持SMP计算机,所以Linux系统本身能够在SMP中的多个CPU上调度作业。所以Beowulf集群本身就没有必要识别集群的节点是不是共享内存计算机了。

和SMP系统相比,集群系统有明显的优点。关于这一点请参阅本系列文章的第一篇。

因为Beowulf集群采用消息传递完成并行程序间通信,所以网络传输成了系统的瓶颈。在实际的系统中,通常采用有两套彼此的独立的网络设备。一套是普通的以太网,用于象系统管理和文件服务等普通的网络通信。另一套网络是用于进程间通信的高速网,象Myrinet和Giganet。和100M以太网相比,这类网络具有低延迟和高带宽的特性。

还有三类设备虽然不是必须,但是对于集群管理却是非常重要的:

  • KVM Swither:KVM是指Keyboard、Video和Mouse。这个设备可以让系统管理员用一套KVM管理系统中的所有节点。
  • 远程电源管理设备(如ASM):这类设备使得管理员可以在管理节点Power on/off其他节点。
  • Terminal Server:这种设备通过串口将节点连接起来。通过这个设备,管理员可以在管理节点上虚拟出其他节点上的控制终端。和KVM相比,这种方法不需要硬件的切换。

3.2 Beowulf集群软件

Beowulf集群在软件层次面临的问题是如何在硬件层次上获得最大的性能。通常,Beowulf集群采用Linux+MPI的方式支持并行计算。MPI是采用消息传递的方式实现并行程序间通信。虽然也可以采用其他的通信方法,但是消息传递模式是最适合于集群系统的。 简单地说,有两种在并行程序间传递并发的方法:

  • 使用处理器间的消息传递(MPI)
  • 使用操作系统的线程(Thread)

其他的方法也存在,但是这两种方法应用得最广泛。虽然存在效率和移植的问题,这两种方法都可以在SMP,NUMA和Cluster上实现。

消息传递需要在CPU间拷贝数据,而线程却可以在CPU间共享数据。数据拷贝的速度和延迟是影响消息传递效率的最关键的因素。PVM和MPI是最常用的两种消息传递API。消息传递也可以在线程上实现,并且消息传递即可以用于集群系统,也可以用于SMP系统。和线程相比,在SMP系统上使用消息传递的优点在于可以很方便的把SMP上的应用移植到集群系统上。

线程的最大特点是,线程间是共享数据。因此它在SMP系统上工作的更好。而且Linux本身也是支持Posix线程的。但是使用线程的最大缺点在于,很难将线程扩展到SMP系统以外。虽然NUMA技术可以高效的做到这一点,但是那非常昂贵而且Linux本身也不支持。

下表概括了线程和消息传递在SMP和集群系统上的比较:

*需要昂贵的NUMA技术

  SMP系统性能 集群系统性能 扩展性
消息传递 很好 很好
线程 很好 差*

3.3 Beowulf集群应用

Beowulf集群的应用层次位于硬件和软件层次之上。它要解决的问题是如何在实际的集群系统中并行化(PARALLEL)应用中的并发(CONCURRENT)部分,从而使集群上的应用达到最好的性能。

在阐述这部分之前,我们需要区分两个概念: PARALLEL和CONCURRENT。程序的并发(CONCURRENT)部分是指程序中可以独立计算的部分。程序的并行(PARALLEL)部分是指程序中在同一时间被分别执行的并发(CONCURRENT)部分。

它们的区别是很重要的。并发是程序本身的属性,而并行是计算机系统的属性。并行的目的是获得很好的性能。限制并行性能的因素是计算节点间通信的速度和延迟。大部分的Benchmark都有很高的并行性并且通信和延迟不是什么瓶颈。但是其他应用却没有这么简单。对于这些应用,有时候使并发部分并行执行反而可能使应用性能更低。简单的说,除非附加的通信时间代价小于并发节约的计算时间,否则并行执行反而会降低效率。

程序员的任务就是决定哪些并发的部分需要并行执行,而哪些不应该并行执行。这些决定最终会影响应用程序的执行效率。图3描述了实际应用中程序并发部分和通信计算时间比的关系。

在理想的系统中,通信计算时间比应该是恒定的。任何并发部分都应该实现为并行。不幸的是,实际的系统,包括SMP系统,都是图3所示的那样。所以在设计Beowulf集群应用时,必须认识到并发带来的效率依赖于在该系统上通信处理时间比。也正是因为这个原因,虽然可以把应用移植到另一个并发系统上,但是并不能保证应用在被移植的系统上仍然是高效的。一般来说,不存在可移植的且高效的应用程序。

同样的道理,使用更快的CPU也可能使你的应用变慢。

相关主题

  • Linux HPC Cluster Installation, IBM Redbooks, http://www.redbooks.ibm.com/
  • IBM eServer xSeries Clustering Planning Guide, IBM Redbooks, http://www.redbooks.ibm.com/
  • Linux Clustering with CSM & GPFS, IBM Redbooks, http://www.redbooks.ibm.com/
  • Cluster Computing White Paper, Mark Baker, University of Portsmouth, UK
  • Beowulf HOW-TO, http://www.beowulf-underground.org
  • Beowulf Introduction and Overview, http://www.beowulf.org
  • The Mosix Howto, http://www.mosix.org
  • Linux-HA Heartbeat System Design, http://www.linux-ha.org
  • xCAT HOW-TO, http://www.x-CAT.org
  • MPICH, http://www.mcs.anl.gov/mpi/mpich.
  • PVM, http://www.epm.ornl.gov/pvm/pvm_home.html
  • OpenPBS, http://www.openpbs.org/
  • Maui, http://www.supercluster.org/
  • Condor Manual, Condor Team, University of Wisconsin-Madison
  • Intermezzo, http://inter-mezzo.org/
  • Coda, http://www.coda.cs.cmu.edu/

转自:

https://www.ibm.com/developerworks/cn/linux/cluster/hpc/part2/index.html

Linux高性能计算集群 -- Beowulf集群相关推荐

  1. Linux 高性能计算集群(六)BeoWulf

    概述 1 集群 1.1 什么是集群 简 单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的 集群是,用户从 ...

  2. Linux高性能计算集群

    Linux高性能计算集群 - 概述 本文是Linux高性能集群 系列文章的第一部分.这一部分介绍了集群系统的基本知识,并解释了两类主要的集群:高可用集群和高性能集群.本系列文章的后面几部分将围绕Beo ...

  3. Linux高性能计算集群 - 概述

    1 集群 1.1 什么是集群 简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的集群是,用户从来不会意识 ...

  4. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  5. linux集群管理平台,基于Linux平台的高可用集群管理系统的研究与实现

    摘要: 集群管理系统的高可用性是指其能够连续地对外提供服务,本文针对集群系统的高可用性,以开源的集群搭建和管理软件KUSU为基础,以集群管理节点的双机热备份技术理论为支撑,以实现集群系统的帮障检测与业 ...

  6. LINUX 下 配置MySQL数据库集群

    LINUX 下 配置MySQL数据库集群 MySQL数据库集群进行正确配置步骤(1) 此文章主要向大家讲述的是对MySQL数据库集群进行正确配置的实际操作步骤,以及对其概念的讲述,如果你对其相关的实际 ...

  7. 微信公众号 多台服务器,在多台 Linux 服务器上搭建 Pulsar 集群

    作者:高天赐 编辑:Irene Pulsar 是一个支持多租户的.高性能的消息中间件.上一篇我们介绍了如何在 Mac 上搭建 Pulsar 集群,本文详细介绍如何在 3 台 Linux 服务器上搭建 ...

  8. 基于linux的oracle_rac实时应用集群研究,基于Linux的OracleRAC实时应用集群研究毕业设计论文(资料4)...

    <基于Linux的OracleRAC实时应用集群研究毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于Linux的OracleRAC实时应用集群研究毕业设计论文> ...

  9. 基于linux的oracle_rac实时应用集群研究,基于Linux的OracleRAC实时应用集群研究毕业设计论文...

    <基于Linux的OracleRAC实时应用集群研究毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于Linux的OracleRAC实时应用集群研究毕业设计论文> ...

最新文章

  1. jquery用添加按钮把数据传送给PHP页面
  2. 九度题库(所有题目整理,适合计算机考研和面试的人用)
  3. ITK:打开一个二进制图像
  4. group by 将null放到其他_为什么我不建议你用去 “ ! = null quot; 做判空?
  5. android ProgressBar实现扫描SD卡文件 + SimpleAdapter绑定ListView
  6. Spring学习总结(23)——Spring Framework 5.0 新特性
  7. 2019 互联网大事记:谁是最后的赢家?
  8. Linux环境下通过gstack命令查看进程的运行堆栈信息
  9. 盘点12个Python数据可视化库,通吃任何领域
  10. 步进式解读Apache许可证
  11. python免费程序-Python——免费观看全网视频小程序
  12. Java 技巧篇-IntelliJ IDEA快捷键设置,格式化代码快捷键
  13. js 事件绑定传入自定义参数
  14. shellcode加载器--从入门到放弃
  15. php实现增量更新,基于html5plus平台 实现app增量更新功能
  16. 将VMware工作站最小化至托盘栏
  17. Android图表库MPAndroidChart(二)——线形图的方方面面,看完你会回来感谢我的
  18. 计算机关机时出现计划,电脑计划任务自动关机
  19. python tan_Python tan() 函数 - Python 教程 - 自强学堂
  20. TIKTOK直播网络怎么选?海外服务器卡顿不稳定怎么办?

热门文章

  1. 数据结构:KMP算法 串的模式匹配算法(全网最详细)
  2. js实现txt/excel文件下载 1
  3. Visial Studio 萌新 错误列表 之 “变量已被优化掉 因而不可用“
  4. 芒果tvvip_那么,如何切芒果?
  5. ICLR2020放榜 687篇入选34篇得满分!且看OpenReview数据图文详解
  6. 物联网从云平台到中间件——集成与被集成
  7. SD卡系列之---SD卡读写
  8. 黑莓CEO海因斯对iPhone的评价是用户界面已5年没创新了
  9. 计算机图形学笔记(观测变换、模型变换、视图变换、投影变换、视口变换)
  10. 武汉中显液晶屏在电梯行业中的应用解决方案: