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計算機組成。 Beowulf集群的重要模塊 撇開並行應用本身不談,跟任何集群一樣,Beowulf的性能取決於下面幾個因素:節點本身、節點之間互聯設備、底層通信軟件(包括互聯設備的驅動)、全局資源管理系統以及並行計算環境(PVM或MPI)等等。 對於給定的應用問題,在節點數一定的條件下,則由以下三個方面的因素來決定並行處理的速度。首先是應用問題求解的算法,其次是處理結點軟硬件的速度。另外,由於應用問題的不同部分之間往往有著某種數據依賴關系,不同部分之間需要進行一定的通信,因此通信性能成了另外的一個因素。下面,我們將著重介紹高性能集群的通信子系統:底層互聯設備、底層通信軟件以及並行計算環境。從下圖可以看到,這幾個部分對於整個集群的性能來說都是非常重要的。 · 底層互聯網絡 在集群系統中,分布在各個節點上的進程之間通常有大量的信息要交換,這都要通過互聯網絡來實現。因此,互聯網絡性能的優劣會直接影響信息交換的速率和效率,進而影響整個集群系統的整體性能。 理想狀態下互聯網絡應該具有以下特征: ☆較短的通信延時(Latency) ☆較高的通信帶寬(Bandwidth) ☆極小的錯誤率(Error Rate) ☆較好的可擴展性(Scalability) 集群中經常使用的互聯設備有快速以太網、ATM網絡、 Myrinet以及專用的mesh網絡等等。 · 底層通信軟件 底層通信軟件是集群通信效率高低的關鍵。在這一層所要關心的問題是協議問題。TCP/IP協議把各種各樣異構的機器連接起來,組成一個實際的計算機網絡。這種強大的兼容性卻往往需要以效率作為代價。比如用戶的消息從發送方到接收方一般要經過多次拷貝(從發方用戶空間拷貝到核心空間,從核心空間拷貝到接收方用戶空間以及中間進行差錯校驗,重發機制等等帶來的拷貝)。而統計表明,每增加一次拷貝,通信的效率就會降低至少20%。而在集群中,就采用一些專門的技術來解決這些問題。比如用戶級通信技術用來減少通信軟件進入操作系統核心的次數,零拷貝技術減少消息通路上的拷貝次數等等。 · 網絡並行計算軟件 有了高速網絡和簡潔高效的底層協議,集群並行計算軟件的任務就是在提供完備的並行計算語義的情況下,盡量地把底層物理性能提供給上層的並行應用。集群(包括Beowulf)中最流行的兩個並行計算環境是PVM 和MPI。 PVM(Parallel Virtual Machine)是由美國 田納西大學、奧克裡季國家實驗室等研制的並行程序開發環境。它可以把多個異構的計算機組織起來成為一個易於管理的、可擴展的、易編程使用的並行計算資源。它的各個計算結點可以是共享存儲或分布式存儲的多處理機或者是向量超級計算機、專用的圖形、標量工作站。這些異構的計算節點可以通過多種網絡(比如Ethernet、FDDI等等)互聯,成為一個網絡計算虛擬機。用戶的計算任務被分配到各個計算節點上,多個節點並行運算,從而實現粗粒度的並行。 PVM的免費、開放以及易用使其成為一個被廣泛接受的並行程序開發環境,有很多並行機公司都宣布支持PVM、PVM 可以安裝到各種Unix、 Windows操作系統上運行。所有這些又有力地促進了PVM的推廣。現在所有的並行機都支持PVM3。 MPI是並行計算機的消息傳遞接口標准。指定該標准的主要目的是為了提高並行程序的可移植性和使用的方便性。有了統一的標准,並行計算環境下的應用軟件庫以及軟件工具就都可以透明的移植。各個廠商可以依據標准提供獨具特色和優勢的軟件實現和硬件支持,從而提高並行處理的能力。 MPI沒有簡單地指定某系統為標准,而是吸取許多已經廣泛應用的消息傳遞系統的特點。它在采納已有系統優點的基礎上,增加了許多新的特點,從而使其成為非常有吸引力的標准。