(無錫科技職業(yè)學院教務處,無錫市,214028)
(無錫開放大學后勤與裝備保障部,無錫市,214021) 杜 俊
通信服務器通過串行通信卡接收測量信息,對信息進行預處理并封裝成一定的格式信息。通信服務器在每個時統(tǒng)周期把格式信息以廣播的方式傳送給池中計算機中的各個計算節(jié)點及數(shù)據(jù)庫服務器(存儲后備方案預演),同時把按某種方式統(tǒng)計的原始數(shù)據(jù)信息發(fā)送至控制中心??刂浦行鸟v留的負載平衡軟件根據(jù)各個計算節(jié)點的資源使用、負載情況動態(tài)產(chǎn)生任務分配表并廣播給各計算節(jié)點。各個計算節(jié)點的控制進程在接收到格式數(shù)據(jù)、任務分配表后,把它們寫入共享內(nèi)存?zhèn)溆嬎氵M程使用。計算進程讀取任務分配表,確定由其處理的數(shù)據(jù)、處理方式、結(jié)果去向等。在計算節(jié)點中要對數(shù)據(jù)進行合理性檢驗、平滑濾波等解算處理。處理完數(shù)據(jù)后,各計算節(jié)點向負載平衡軟件報告任務完成情況,并將解算結(jié)果送至數(shù)據(jù)庫服務器。數(shù)據(jù)庫服務器一方面把解算結(jié)果實時送至指揮顯示終端區(qū),作為指揮控制的決策信息,另一方面存儲這些數(shù)據(jù)備事后重演。從通信服務器接收到測量數(shù)據(jù)到池內(nèi)所有節(jié)點協(xié)同完成數(shù)據(jù)解算這一過程,屬于計算池并行計算的范疇。整個計算池系統(tǒng)的工作如同一臺高性能的大型計算機,數(shù)據(jù)從輸入通道進入計算機系統(tǒng),處理完成后結(jié)果從輸出通道輸出。計算池的優(yōu)點是它將以更高效的方式為用戶服務,并顯著地提高系統(tǒng)的服務能力[1]。
計算池系統(tǒng)的基本硬件組成:控制節(jié)點、數(shù)據(jù)庫節(jié)點、若干個計算節(jié)點和通信節(jié)點,各節(jié)點機通過千兆光纖網(wǎng)絡互連交換和傳輸數(shù)據(jù)。
在計算池系統(tǒng)中,池節(jié)點通過千兆以太網(wǎng)交換機互連構(gòu)成。在估計指控計算池系統(tǒng)網(wǎng)絡數(shù)據(jù)流量時,以64臺測量設備考慮,每信息幀長度25B,每秒50幀全雙工,那么原始信息量為:64×25×50×2=160KB/S。每一個數(shù)據(jù)處理周期原始信息量為160KB/50=3.2KB。估計中間計算結(jié)果交換、控制信息和網(wǎng)絡管理信息的數(shù)據(jù)量為原始信息的100倍,計算池系統(tǒng)各單元間交換數(shù)據(jù)量不大于128MB/S,而計算池系統(tǒng)單元間的互聯(lián)網(wǎng)絡帶寬是1GB/S,遠高于128MB/S。同時,合理的計算單元任務分配能夠明顯地減少節(jié)點間數(shù)據(jù)、消息流量,因此千兆以太網(wǎng)計算池中機器互連能夠滿足實時數(shù)據(jù)傳輸?shù)男枨?。當然,合理的網(wǎng)絡拓撲結(jié)構(gòu)、高性能網(wǎng)絡交換設備和分系統(tǒng)間的路由/防火墻,無論是對提高網(wǎng)絡效率還是保證系統(tǒng)安全都是有必要的。[2]
為避免池中單元硬件資源的消耗并易于管理,除控制節(jié)點外,池中各節(jié)點均為無頭服務器。控制節(jié)點作為系統(tǒng)控制中心,負責完成整個計算池系統(tǒng)的控制,收集各個節(jié)點機的資源狀況,按照負載均衡策略對實時任務進行動態(tài)分配,并監(jiān)控計算池系統(tǒng)各個計算節(jié)點的任務負載。計算節(jié)點主要完成控制節(jié)點分配給本計算節(jié)點的實時任務,計算池計算機的并行處理。數(shù)據(jù)庫節(jié)點匯集各個計算節(jié)點的實時任務處理結(jié)果,并進行后處理。通信節(jié)點負責完成外部多種實時任務的采集,進行預處理并轉(zhuǎn)發(fā)給計算節(jié)點。整個計算池系統(tǒng)在智能時統(tǒng)終端提供的統(tǒng)一的毫秒級精密時統(tǒng)信號支配下工作(詳見圖1)。
圖1 計算池系統(tǒng)基本硬件組成
一個實用的計算池系統(tǒng)應有一個高效的軟件環(huán)境。計算池系統(tǒng)軟件結(jié)構(gòu)包括: 操作系統(tǒng)、通信協(xié)議、單一系統(tǒng)映像以及并行程序設計環(huán)境與工具等[3]。
3.1.1 操作系統(tǒng)的選擇
計算池軟件系統(tǒng)建立在網(wǎng)絡操作系統(tǒng)之上,操作系統(tǒng)的性能將直接影響計算池軟件系統(tǒng)的性能,Linux操作系統(tǒng)有許多特性適合于開發(fā)計算池環(huán)境。比如:
(1)Linux的進程調(diào)度方式簡單而有效。對用戶進程,Linux采用動態(tài)優(yōu)先級的調(diào)度方式;對內(nèi)核中的例程(如設備驅(qū)動程序、中斷服務程序等)則采用軟中斷機制,這種能機制保證內(nèi)核的高效運行。
(2)Linux支持內(nèi)核線程。內(nèi)核線程是在后臺運行而又無須終端或登錄shell和它結(jié)合在一起的進程。
(3)Linux的模塊機制使內(nèi)核保持獨立而又易于擴充。模塊機制使內(nèi)核容易添加或卸載模塊,而無須重新編譯內(nèi)核。
因此,除計算池通信服務器節(jié)點外,都采用了中軟Linux作為平臺。由于通信設備對系統(tǒng)的特殊要求,通信服務器采用SunSolaris8.0作為系統(tǒng)平臺。
3.1.2 軟件開發(fā)過程中用到的主要工具
(1)GCC.295開發(fā)包:用于開發(fā)各種守護進程,如節(jié)點控制、信息收集、計算等進程。
(2)QT圖形開發(fā)包:用于開發(fā)各種圖形界面的用戶管理工具,如計算池系統(tǒng)監(jiān)控界面、負載平衡顯示界面等。
(3)Java2 SDK1.3:用于開發(fā)基于瀏覽器的數(shù)據(jù)顯示工具。
(4)Solaris開發(fā)包:用于開發(fā)通信服務器中的數(shù)據(jù)采集程序。
(5)Oracles數(shù)據(jù)庫:用作數(shù)據(jù)庫服務器中的數(shù)據(jù)管理系統(tǒng)。
并行計算模型是對計算池計算在語義上的抽象描述。在計算池系統(tǒng)中,采用的是BSP(Bulk Synchronous Parallel Computing Model)模型(Bulk同步模型)。它是由Valiant(1990)提出的一種“塊”同步并行計算模型,它是一種異步MIMD-MD模型,支持消息傳遞系統(tǒng),塊內(nèi)異步并行,塊間顯式同步。與其他并行模型相比,BSP模型的特點在于能夠適應多種并行計算結(jié)構(gòu),有明顯的現(xiàn)實意義而獲得的廣泛的應用。BSP模型的參數(shù)有:p(處理器數(shù));q(同步障時間);g(帶寬因子)[4]。
BSP模型高度結(jié)構(gòu)化的特征,使得BSP程序能夠預測全局通信,這是其他模型大都不具備的。因為BSP模型全局地處理通信過程,統(tǒng)一地分布進程,從而能夠通過通信進程間相互影響的關(guān)系,估計出總的通信時間開銷。
在一個具體通信階段中,每個處理器可以向其他處理器發(fā)送一組消息,也可以接收其他處理器發(fā)送來的消息。假設一個處理器發(fā)送或者接收的消息條數(shù)最多為h,這個消息構(gòu)成的集合稱之為h—關(guān)系。h—關(guān)系的發(fā)送時間可以用一個結(jié)構(gòu)參數(shù)g來表示,直觀而言,g反映網(wǎng)絡連續(xù)傳遞消息的能力。具體的含義是,如果所有消息長度為一個字,那么h—關(guān)系發(fā)送時間為hg。為了便于不同硬件體系結(jié)構(gòu)之間的比較,g的單位通常是處理器執(zhí)行一條指令的時間。
BSP模型的第二個參數(shù)q表示路障同步的代價。在路障處,每個進程能夠達到一個特定狀態(tài),并能夠確定其他進程也達到這個狀態(tài)。同參數(shù)g的單位定義一樣,q的單位也是處理器指令執(zhí)行時間。利用BSP模型這兩個參數(shù),可以用下面的方法計算出在特定結(jié)構(gòu)上運行一個BSP程序的代價。單個超步的執(zhí)行時間是程序完成本地計算時間、發(fā)送h—關(guān)系的時間以及最后路障同步時間三者之和,超步執(zhí)行時間Tsuperstep可表達為:
Tsuperstep=Maxwi+Maxhig+q
其中wi是處理器i的計算時間。如果等式中的每一項都取最大值,則等式可簡化為:
Tsuperstep=w+gh+q
BSP程序總的執(zhí)行時間是每個超步執(zhí)行時間之和。
在系統(tǒng)中,超級步在不同的節(jié)點中有不同的內(nèi)容并且完成時間不能超過時統(tǒng)周期(兩時統(tǒng)信號的間隔)。在每一超級步內(nèi),池中各節(jié)點都要完成本節(jié)點信息收集并向控制中心發(fā)出心跳信號。另外,控制節(jié)點要收集池中各節(jié)點資源使用和負載情況、統(tǒng)計數(shù)據(jù)通道信息、完成任務分配;通信服務器要接收測量數(shù)據(jù)、向控制中心注冊數(shù)據(jù)通道信息并向計算中心廣播原始數(shù)據(jù);數(shù)據(jù)庫服務器匯總各種數(shù)據(jù)并廣播至指揮顯示中心;計算中心要接收原始數(shù)據(jù)、任務分配表、完成計算任務、向控制中心匯報計算情況、向數(shù)據(jù)庫服務器輸出計算結(jié)果[5]。
計算池系統(tǒng)除了要發(fā)揮一般計算池系統(tǒng)的并行計算能力外,還需要足夠快的系統(tǒng)反應時間。因此,現(xiàn)有的事務處理和科學計算計算池控制軟件就不能照搬過來。資源庫計算池控制軟件需要專門開發(fā),應用軟件也需要根據(jù)系統(tǒng)硬件環(huán)境來開發(fā)。該軟件系統(tǒng)由一些相互緊密聯(lián)系的功能模塊組成,消息傳遞系統(tǒng)是各模塊之間交流信息的手段;系統(tǒng)監(jiān)控模塊協(xié)調(diào)各模塊之間有秩序地工作;數(shù)據(jù)處理模塊的任務由負載平衡模塊動態(tài)分配。計算池系統(tǒng)主要軟件模塊功能描述如下:
(1)消息傳遞系統(tǒng):由網(wǎng)絡消息和本地消息兩部分組成。網(wǎng)絡消息完成節(jié)點間控制信息、數(shù)據(jù)的交換;本地消息完成節(jié)點內(nèi)不同進程間的通信。由于Socket相對于MPI/PVM具有更低級、更快速的優(yōu)點,網(wǎng)絡消息的實現(xiàn)采用了Berkeley Socket網(wǎng)際編程技術(shù),這也是實時系統(tǒng)要求低延遲所必需的。Socket技術(shù)的協(xié)議基礎是TCP/IP協(xié)議簇傳輸層的TCP和UDP協(xié)議。
(2)網(wǎng)絡通信:駐留在每一個控制臺和計算節(jié)點中。在池內(nèi)部各計算節(jié)點之間、池和控制臺之間,通過高速網(wǎng)絡設備,傳輸控制信息、任務分配表、原始任務數(shù)據(jù)、中間處理結(jié)果、輸出結(jié)算結(jié)果等信息和數(shù)據(jù)。對計算池系統(tǒng)來說,網(wǎng)絡通信的反應時間(Latency)是一個很重要的技術(shù)指標。在某個數(shù)據(jù)處理進程工作過程中,有可能需要池中其他計算節(jié)點的中間計算結(jié)果,那么,網(wǎng)絡通信軟件根據(jù)任務分配表,查找出所需要的數(shù)據(jù)在哪個節(jié)點,然后向該節(jié)點發(fā)出請求。在計算池系統(tǒng)中,重發(fā)的網(wǎng)絡數(shù)據(jù)可能已經(jīng)過時,所以網(wǎng)絡通信采用UDP傳輸方式,以保證數(shù)據(jù)的實時性。
(3)系統(tǒng)監(jiān)控:駐留在每一個控制臺和計算節(jié)點中。駐留在池計算節(jié)點中的系統(tǒng)監(jiān)控軟件,動態(tài)地收集本節(jié)點的硬件、操作系統(tǒng)、應用軟件、網(wǎng)絡通信等工作狀態(tài)信息,通過網(wǎng)絡通信程序報告給系統(tǒng)監(jiān)控程序。駐留在控制臺的系統(tǒng)監(jiān)控程序收集所有池計算節(jié)點的硬件和軟件工作狀態(tài)信息,在顯示給控制員的同時,將該信息提交給駐留在控制臺的池負載平衡軟件,作為負載平衡根據(jù)之一。
(4)負載平衡:對于關(guān)鍵應用場所的計算池系統(tǒng)而言,要發(fā)揮計算池系統(tǒng)特有的高可用性,保證關(guān)鍵場所的實時數(shù)據(jù)處理連續(xù)不間斷地進行,加快計算池系統(tǒng)監(jiān)控和負載遷移機制是必需的。當計算池系統(tǒng)中某個計算節(jié)點失效或過載時,池系統(tǒng)監(jiān)控軟件能夠在規(guī)定時間內(nèi)檢測出池系統(tǒng)的異常節(jié)點,并將此消息傳遞給池負載平衡軟件,負載平衡軟件則在規(guī)定時間內(nèi)將異常節(jié)點的數(shù)據(jù)處理任務移交給其他可用節(jié)點來完成。
(5)數(shù)據(jù)處理:數(shù)據(jù)處理軟件是實現(xiàn)應用目標的核心。為便于管理,確保系統(tǒng)的實時性,數(shù)據(jù)處理軟件采用單一映象,N倍地駐留于各個池計算單元。N取決于每個計算單元中處理器的數(shù)目。數(shù)據(jù)處理軟件在獲得原始數(shù)據(jù)后,立即讀取由負載平衡軟件建立和管理的任務分配表,來確定要處理的數(shù)據(jù)量、處理方式、結(jié)果去向等,處理完規(guī)定的數(shù)據(jù)之后,向負載平衡軟件報告任務完成情況,負載平衡軟件由此判斷各計算單元應用程序的工作狀態(tài),并作出必要的任務遷移和調(diào)整。
4.1.2 軟件布局
計算池作為高性能計算系統(tǒng),必須提供“單一系統(tǒng)映像”功能。在應用中,計算池系統(tǒng)中各節(jié)點駐留相同的系統(tǒng)應用軟件,具有“單一系統(tǒng)映像”功能。各節(jié)點先讀取計算池系統(tǒng)配置文件,通過與本機靜態(tài)IP地址相比較,判讀出節(jié)點屬性,然后轉(zhuǎn)去執(zhí)行不同的功能軟件模塊。計算池系統(tǒng)中,各個池節(jié)點均駐留有池控制進程、池節(jié)點信息收集進程和計算池系統(tǒng)配置文件,其余駐留軟件就是每一個池節(jié)點主要功能的體現(xiàn)。各個池節(jié)點駐留有不同的軟件模塊。
(1)計算池節(jié)點控制進程,決定每一個池節(jié)點的行為及動作,控制進程在時統(tǒng)信號的驅(qū)動下工作,是實現(xiàn)計算池計算機單一系統(tǒng)映像的主要進程。
(2)計算池節(jié)點信息收集守護進程,在每一個時統(tǒng)周期內(nèi)動態(tài)地收集本節(jié)點的工作狀態(tài)信息,通過網(wǎng)絡通信程序報告給控制節(jié)點的系統(tǒng)監(jiān)控程序。
(3)計算池系統(tǒng)配置文件,決定每一個池節(jié)點的角色及行為。
(4)人機交互界面,運行在池控制節(jié)點上,顯示池各節(jié)點的狀態(tài)信息,并向其他節(jié)點發(fā)布控制命令,是計算池計算機單一系統(tǒng)映像的主要體現(xiàn),屏蔽了其他池節(jié)點的存在。
(5)任務數(shù)據(jù)處理守護進程,運行于計算節(jié)點上,兩個互為鏡像的計算守護進程常駐內(nèi)存, 主要完成計算池實時任務數(shù)據(jù)的并行計算。
(6)數(shù)據(jù)廣播進程,運行于通信節(jié)點,負責發(fā)布原始計算數(shù)據(jù)給各個池節(jié)點。
(7)數(shù)據(jù)匯集/轉(zhuǎn)發(fā)進程,運行于數(shù)據(jù)庫節(jié)點,收集最終計算結(jié)果, 供Web服務器調(diào)用。
相對組成計算池硬件環(huán)境的工作站的性能而言,負責數(shù)據(jù)通信的互聯(lián)網(wǎng)絡的通信性能是決定計算池系統(tǒng)性能的關(guān)鍵因素。一般來說,一次通信時間延遲由發(fā)送方延遲、接收方延遲和物理鏈路傳輸時間三部分組成。在TCP/IP協(xié)議簇中,面向連接的TCP協(xié)議傳輸可靠,但在每次通信前須經(jīng)3次握手建立連接,并且不支持廣播和多點消息傳送,系統(tǒng)開銷大,不利于保證系統(tǒng)的實時性。用戶數(shù)據(jù)包協(xié)議(UDP)是面向無連接的協(xié)議,支持廣播和多點消息傳送,在通信前不需要建立連接,系統(tǒng)開銷小。UDP協(xié)議的可靠性能夠在網(wǎng)絡負載不重、無網(wǎng)絡擁塞時得到保證,尤其是在局域網(wǎng)中,可靠性較高。在計算池系統(tǒng)中,數(shù)據(jù)和消息傳遞采用UDP規(guī)程,既能夠減少由TCP規(guī)程應答包帶來的網(wǎng)絡鏈路開銷,還能夠減少計算單元處理過濾TCP規(guī)程信息包時額外的CPU開銷。另外,系統(tǒng)采用任務分配表活動消息機制以減少通信延遲,在任務分配表活動消息中,包含數(shù)據(jù)處理信息,指定相關(guān)的輸入輸出資源和任務描述。
5.2.1 千兆以太網(wǎng)
千兆以太網(wǎng)(1000Base-T)與以太網(wǎng)(10Base-T)和快速以太網(wǎng)(100Base-T)是完全兼容的,但速度是100Base-T的十倍,是10Base-T的一百倍。同時,它支持與當前的高寬帶需求應用程序相協(xié)調(diào)的額外特性,而且與日益增強的服務器和臺式計算機的功能相匹配。為了滿足各種應用的需求,千兆以太網(wǎng)采用交換技術(shù)和RSVP協(xié)議資源預留協(xié)議并提供服務優(yōu)先權(quán)。千兆以太網(wǎng)標準結(jié)合了802.3幀格式和光纖通道物理接口技術(shù),這樣,既保持了與以太網(wǎng)的兼容性,也利用了光纖通道物理接口的千兆位速度。在物理層,千兆以太網(wǎng)的連接器是SC光連接器,它既可用于單模光纖,也可用于多模光纖。
5.2.2 第三層交換技術(shù)
第三層交換技術(shù)也稱為PI交換技術(shù)。它將第二層交換機和第三層路由器兩者的優(yōu)勢結(jié)合成一個有機的整體,利用OSI第三層協(xié)議中的信息來加強第二層交換功能,第三層交換技術(shù)是新一代局域網(wǎng)的路由和交換技術(shù)。
計算池系統(tǒng)可在正常工作的情況下,處理失效計算單元的軟件或硬件故障。配備反應時間短的Linux操作系統(tǒng),在合理的池控制、負載分配軟件的管理下,計算池能夠在幾個毫秒的時間內(nèi),完成故障節(jié)點的判斷和任務遷移,具有集中結(jié)構(gòu)的SMP計算機系統(tǒng)無法比擬的高可用性。
實時性基于任務分配表的動態(tài)負載平衡機制,極大地簡化了計算池并行計算程序的開發(fā)和調(diào)試,有效地解決了任務分配、消息傳遞、任務遷移等關(guān)鍵技術(shù)的實時性。
計算池各節(jié)點駐留相同的系統(tǒng)軟件,通過本機靜態(tài)IP地址判讀節(jié)點屬性,很好地解決了單一入口點、單一文件層次、單點管理和控制等技術(shù)難點,具有單一系統(tǒng)映像功能。
計算池的計算能力隨節(jié)點增多而增加。因為是松耦合的結(jié)構(gòu),計算池能擴展至幾百個節(jié)點,而對于SMP來說,要超過幾十個結(jié)點就已非常困難。