高性能群集
来自EEWiki.
背景:上个十年的大部分时间里,高性能计算(HPC)开发方面的主要进展都集中在商业群集( commodity clusters )方面,也就是平常所说的Beowulf群集。这些群集使用市场上普通的硬件,构建出的系统性能在很多应用中却能和那些传统的超级计算机相媲美,甚至有过之而无不及。所需的成本也大约只有后者的十分之一甚至更少。并不是每一种应用都适用群集,但大部分的科学应用都可以通过小的改动而采用群集系统。
基本原理:对集群的研究起源于集群系统的良好的性能可扩展性(scalability)。提高CPU主频和总线带宽是最初提供计算机性能的主要手段。但是这一手段对系统性能的提供是有限的。接着人们通过增加CPU个数和内存容量来提高性能,于是出现了向量机,对称多处理机(SMP)等。但是当CPU的个数超过某一阈值,象SMP这些多处理机系统的可扩展性就变的极差。主要瓶颈在于CPU访问内存的带宽并不能随着CPU个数的增加而有效增长。与SMP相反,集群系统的性能随着CPU个数的增加几乎是线性变化的。
集群系统的优点并不仅在于此。下面列举了集群系统的主要优点:
1.高可扩展性:如上所述。
2.高可用性:集群中的一个节点失效,它的任务可以传递给其他节点。可以有效防止单点失效。
3.高性能:负载平衡集群允许系统同时接入更多的用户。
4.高性价比:可以采用廉价的符合工业标准的硬件构造高性能的系统。
一般我们把集群系统分为两类:
高可用(High Availability)集群,简称HA集群。这类集群致力于提供高度可靠的服务。
高性能计算(High Perfermance Computing)集群,简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。
简单的说,高性能计算(High-Performance Computing)是计算机科学的一个分支,它致力于开发超级计算机,研究并行算法和开发相关软件。高性能计算主要研究如下两类问题:
大规模科学问题,象天气预报、地形分析和生物制药等;
存储和处理海量数据,象数据挖掘、图象处理和基因测序;
顾名思义,高性能集群就是采用集群技术来研究高性能计算。
高性能计算的分类方法很多。这里从并行任务间的关系角度来对高性能计算分类。
1 高吞吐计算(High-throughput Computing)
有一类高性能计算,可以把它分成若干可以并行的子任务,而且各个子任务彼此间没有什么关联。象在家搜寻外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是这一类型应用。这一项目是利用Internet上的闲置的计算资源来搜寻外星人。SETI项目的服务器将一组数据和数据模式发给Internet上参加SETI的计算节点,计算节点在给定的数据上用给定的模式进行搜索,然后将搜索的结果发给服务器。服务器负责将从各个计算节点返回的数据汇集成完整的数据。因为这种类型应用的一个共同特征是在海量数据上搜索某些模式,所以把这类计算称为高吞吐计算。所谓的Internet计算都属于这一类。按照Flynn的分类,高吞吐计算属于SIMD(Single Instruction/Multiple Data)的范畴。
2 分布计算(Distributed Computing)
另一类计算刚好和高吞吐计算相反,它们虽然可以给分成若干并行的子任务,但是子任务间联系很紧密,需要大量的数据交换。按照Flynn的分类,分布式的高性能计算属于MIMD(Multiple Instruction/Multiple Data)的范畴。
现状及发展方向:高可用群集系统起初演化自双结点冗余的配置,随着对计算性能要求的不断提高,逐渐地它可以支持多个结点机,并且通过均衡负载对参与运算的结点机提供了额外的机制以充分利用其聚合计算的性能优点,这使得高性能和高可用性的关系变得愈为密切。虽然高性能和高可用性的发展并非是同步的,但事实上,高性能并行计算机和高可用性的发展可谓是相辅相呈的。并行处理是将多个处理单元整合以达到高性能的目的,而只有具有一定的容错性才能形成有效的并行计算,这是因为容错性使得应用程序运行的连续性得以保证;另外一方面,由于并行处理技术从本质上提供给了高可用系统一种重要的因素即整体架构的冗余,因此高性能技术又促进了高可用技术的发展。

