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