背景资料:
相关名词
SMP:对称多处理器
LTSP:Linux终端服务器项目 (Linux Terminal Server Project)
Kernel:内核
Ramdisk:内存虚拟盘
Etherboot:以太启动
Bootrom:网卡启动芯片
大型主机(Mainframes),超级计算机(Supercomputers)和集群(Clusters)
纵观计算机的历史,最先让人了解的就是大型主机和超级计算机,这是计算机历史的一部分,没有这些大家伙,就没有今天的个人电脑。这些大家伙通常是一个或几个有强大研发队伍和资金的厂商完成,最初的目的是军方或政府的需要,很多大学的研发也促成了这些大家伙更强大。一般情况下,大型主机和超级计算机都使用超过8个,多达上百个的CPU和自己的专用操作系统,计算机历史上很多的重要成员都和这些大家伙有关,IBM,DEC,Cray,SGI,HAL。大型主机已经成为历史,而超级计算机成了各国技术实力的争夺焦点,但是目前个人电脑的发展使集群成为竞争超级计算机的强大对手,集群的CPU数和浮点能力和超级计算机的差距已经越来越近。
Cluster
集群系统,也有成为机群和群集系统的。集群主要分为三类:容错集群(Fail-over Cluster),负载均衡集群(Load balancing Cluster),高性能计算集群(High Performance Computing)。
容错集群是指两台主机通过两个或两个以上网路连接的系统,其中一个连接称为心跳线(heartbeat),利用每台主机上的服务进程监控对方主机的状态,一旦发现对方主机宕机或出现不能正常工作的情况,心跳线会反映给互为备份的另外一台主机,该主机则会接替出问题的主机。典型的使用场景是空军的雷达追踪系统。
负载均衡集群一般用于相应网络请求的网页服务器,代理服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
高性能计算集群是指具有响应大量计算的性能,可以作为数据中心使用的计算机的集合。比如压缩mp3,气象云图的分析等。
集群模式
(N)UMA非一致性内存访问(Non-)Uniform Memory Access一般是指通过执行特殊的程序代码对内存的共享访问。在Linux内核中,可以执行对访问时间内的不同内存区域进行交叉访问,也就是内核进程可以使用接近CPU使用时的内存。对正在使用内存区域的访问,才可以共享。线性的内存访问是无法共享的。
PVM/MPI是指并行虚拟机(Parallel Virrual Machine)和信息传递界面(Message Passing Interface)。在Beowulf的世界里最常提到的就是这两个概念,该软件包已经提供了多平台的版本。通过开放式的标准信息传递库,并行机之间可以通讯,事实上PVM也是一组库,程序可以使用这些编译库来改造程序适应并行系统。但是这些都要相应的修改源程序,系统内核事实上并没有发生改变。
其他模式:Turbo Linux EnFuzion,Platform等网格计算(Grid Computing)不必讨论这类集群不是单纯意义的集群,以Enfuzion为例,EnFuzion是Turbo Linux收购的一个软件改良版(前身就叫Cluster),因为使用了Java,可以跨平台,使用驻留系统服务来监控集群间的通讯,事实上是任务分发和监控器,依赖于计算数据离散性,对于数据不可分的程序,无能为力。也就是说每个节点都运行相同的程序,但处理的数据是不同的,该集群提供了控制这些程序的界面,跨平台性也只是依赖于计算的应用有跨平台版本,而其只提供跨平台的监控。主要集中在CPU空闲的监控和计算的再分配。
数据可分和程序可分
集群计算中最重要的就是分布,根据不同的应用,分为两种:数据可分和程序可分。
数据可分是指数据间没有必然联系或联系在结果的基础上,比如mp3的压缩,每个单独的mp3互不关联,或者有限元计算的某个步骤,单一的曲面计算生成结果再参加后面的关联计算,更著名的是SETI@home通过分析射电望远镜的信号寻找外星人,这是典型的将中间分析结果传递给下一部分析,这就是数据可分,这最适合网格计算。
程序可分,用过ANSYS的人都知道商业软件分为单处理器和多处理器版本,因为计算量大,所以支持SMP的计算软件和使用单一CPU的软件是不同的,多CPU共同运算时也要考虑到内存的访问,处理通讯和负载均衡,除非操作系统支持,不然使用DOS和Windows9x很难用到第二个CPU(甚至不可见),有了操作系统的支持,应用程序也要支持,即使操作系统支持并行,应用程序不可分的话,只能使用1/n(n=CPU数量)的处理能力,典型的例子就是2CPU的WindowsNT/2000下使用单处理器版本的ANSYS,处理器进程显示50%,但是2CPU共同生效。而使用多处理器版本时,2CPU都可以在98%的使用率。因此程序可分是集群重要的应用基础,即使程序本身不可分,而集群支持子进程的迁移,也意味着类似SMP系统支持程序可分。
SETI@home
在家寻找外星人计划,这是NASA全球计划之一,位于波多黎各西北的一个火山口中垂直对天的射电望远镜Arecibo(007黄金眼中最后决战的地点和X-files第二部第一集中收到外星人电波的天线,直径305米,接收器高约30米,约位于130米高处),用于收集来自宇宙的无线电信号,就像TCP/IP网中的sniffer,这是宇宙中的一个嗅探器,通过收集信号,来分析由智慧生物发出的,有一定规律的无线电。比如,第一台电视的信号和猫王歌曲在多年前通过收音机发送的无线电信号,至今还在宇宙中遨游,虽然可能很微弱了,但是还可以接收到。这个计划就是接受类似外星人的无线电信号,具体的步骤是让个人电脑的用户下载客户端程序,一个屏幕保护程序,或一个命令行程序,然后在连接互联网时下载大约330KB的数据包,然后利用处理器空闲时间计算。该数据包只是庞杂数据中的一小部分,但是全球目前加入的上亿台计算机就构成了最大的超级计算机,当计算完成后,在连接互联网时上载结果,并下载新的数据包,根据其目前的计算形式,Intel称为P2P计算,其实是网格计算的一种。上载的数据不是最终数据,经过和其他人加工的数据整合,会产生新的结果,这时可能要继续计算,也可能就此产生阶段报告,每天SETI@home的主页上都会有新的成果,当然不一定是发现外星人的报告。笔者的成绩因为借助了自己设计的网格计算,全球4055845位排名1787名左右,还在向前靠拢,大约是完成了23096个数据包,在中国目前第一。
图17 SETI◎home作为屏幕保护时软件运行界面
图18 位于波多黎各一个火山口中的Arecibo射电望远镜
图19 记得那个著名的007镜头吗
相关连接:
SETI@home的主页:http://setiathome.ssl.berkeley.edu/index.html
笔者的成绩:http://setiathome.ssl.berkeley.edu/fcgi-bin/fcgi?email=dw22077@163.net&cmd=user_stats_new
openMosix小组的成绩:http://setiathome.ssl.berkeley.edu/stats/team/team_151601.html
波多黎各Arecibo射电望远镜:http://www.naic.edu/
需要强大计算的应用
财务与社会行为分析,使用数学模型模拟的计算。
音乐,图象等多媒体数据处理,例如mp3压缩,动画渲染,后期处理。
流体力学,有限元分析,例如乐高玩具的数字模拟强度分析。
编译,数据库挖掘。
医学研究,例如AIDS和DNA的结构分析,成功运作的有UD(United Devices http://www.ud.com/home.htm)
天文研究,例如SETI@home,在家寻找外星人项目(http://setiathome.ssl.berkeley.edu/index.html)。天气和海浪预报。
电子电路数字模拟分析,例如研发新的处理器。
穷举解密,例如破解DES密码(http://www.distributed.net/index.html.en)。
正在研发的分布式计算系统
Beowulf
是目前开放源码世界中最大的高性能计算项目,该项目就在探寻能适应于不同需要,不同处理速度的计算组合。但是这个项目并不是指单一的某个软件包或者一种技术,而是整个研发方向的综合。你可以在该项目中寻找适合你的技术和软件,还有很多项目成员并未找出通用的方法,而是将已经在使用的专门系统公开到Beowulf项目中,让大家参考。其中有用于分布式编译,数据采集,还有多媒体处理等很多领域。
相关连接:www.beowulf.org
Plan 9
1993年源于贝尔实验室(Computing Sciences Research Center of Bell Laboratories) 开发的新分布式操作系统,建立在Unix和C与C++基础上,支持的处理器有Intel x86, Sparc, Alpha, Power PC, 和ARM。目前没有象KDE漂亮的图形界面,使用上接近UNIX,标准UNIX工具也可以使用,但是从设计原理和基础上不同于UNIX,核心已经完全重写并设计成网络操作系统,就像设计完UNIX后的补充,其中设计元素包括用户端的终端,存储固定文件的服务器和提供更快CPU的计算服务器,提供用户验证和网关特性。
目前吸引人的焦点是Plan 9的文件系统可以支持所有的系统服务进程,也就是说所有任何用户可以使用的资源在文件系统中都可以找到唯一的命名,已经可以称为命名空间了。通过网络层的协议9P来访问所有的