《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于集群的MPI主從式并行文件傳輸系統(tǒng)的研究與實(shí)現(xiàn)

基于集群的MPI主從式并行文件傳輸系統(tǒng)的研究與實(shí)現(xiàn)

2008-07-22
作者:龔 梅1, 王 鵬2,1

??? 摘 要: 研究并實(shí)現(xiàn)了一種基于PC集群系統(tǒng)" title="集群系統(tǒng)">集群系統(tǒng)的MPI主從式" title="主從式">主從式并行文件傳輸系統(tǒng),。通過引入一個(gè)監(jiān)控節(jié)點(diǎn)實(shí)時(shí)監(jiān)控當(dāng)前各真實(shí)節(jié)點(diǎn)上的連接數(shù),、請(qǐng)求任務(wù)量以及各節(jié)點(diǎn)的實(shí)際處理能力,,并衡量不同內(nèi)容節(jié)點(diǎn)的負(fù)載,,以實(shí)現(xiàn)集群內(nèi)各節(jié)點(diǎn)負(fù)載均衡" title="負(fù)載均衡">負(fù)載均衡,從而更合理地實(shí)現(xiàn)并行文件I/O" title="I/O">I/O的任務(wù)分配,。結(jié)果顯示,,該系統(tǒng)具有近似線性加速比,即文件I/O傳輸速度隨著并行節(jié)點(diǎn)數(shù)量的增多而提高,。
??? 關(guān)鍵詞: 集群? MPI? 主從式? 并行文件I/O

?

??? 隨著高性能微處理器,、高速網(wǎng)絡(luò)、高性能分布計(jì)算三種技術(shù)的標(biāo)準(zhǔn)工具的飛速發(fā)展[1-2],,以及應(yīng)用對(duì)計(jì)算性能的無止境需求和并行編程環(huán)境的不斷成熟,,集群系統(tǒng)已成為價(jià)格合理的并行計(jì)算工具,并得到了飛速的發(fā)展,。在需要提供高度可靠的服務(wù)以及強(qiáng)大的計(jì)算能力的環(huán)境中,,集群系統(tǒng)以廉價(jià)而又容易獲取的硬件和免費(fèi)或常用軟件為支撐[1],發(fā)揮著越來越明顯的優(yōu)勢,。
??? 并行計(jì)算是由運(yùn)行在多個(gè)部件上的小任務(wù)合作來求解一個(gè)規(guī)模很大的計(jì)算問題的一種方法[3],。并行計(jì)算通過降低單個(gè)問題求解時(shí)間、增加問題求解規(guī)模,、提高問題求解精度,,進(jìn)而提供更好的容錯(cuò)能力、更高的可用性,、可擴(kuò)展性 [1,4],。隨著Internet的迅猛發(fā)展,人們對(duì)信息共享的速度和質(zhì)量都有了更大的需求,。傳統(tǒng)的信息共享(文件傳輸?shù)龋┦呛唵蔚亩鄬?duì)一結(jié)構(gòu),,即多個(gè)客戶端" title="客戶端">客戶端向一臺(tái)服務(wù)器發(fā)出請(qǐng)求,服務(wù)器根據(jù)請(qǐng)求分時(shí)做出應(yīng)答,。然而隨著客戶數(shù)連接請(qǐng)求的增多及網(wǎng)絡(luò)帶寬的限制,,數(shù)據(jù)傳輸面臨著極大的瓶頸,其主要表現(xiàn)為請(qǐng)求響應(yīng)延緩,、數(shù)據(jù)傳輸速度緩慢或根本無法和服務(wù)器成功建立連接等,。為了解決這種局限問題,本文研究并提出基于PC集群的MPI主從式并行文件服務(wù)系統(tǒng),。該系統(tǒng)通過利用PC集群的強(qiáng)大功能,、MPI消息傳遞接口的支撐以及并行算法的引入,充分地利用網(wǎng)絡(luò)資源和廉價(jià)的PC機(jī)硬件資源,,有效地解決了現(xiàn)有網(wǎng)絡(luò)資源信息共享,、大量頻繁文件傳輸問題。經(jīng)過實(shí)驗(yàn)證明,,該系統(tǒng)能夠在在多平臺(tái),、多學(xué)科、異構(gòu)的環(huán)境下協(xié)同工作,。
1 集群MPI并行通信程序設(shè)計(jì)
??? MPI(Message Passing Interface)是一種與語言及平臺(tái)無關(guān),、可以被廣泛使用的編寫消息傳遞程序的標(biāo)準(zhǔn)[4- 5],。MPI是目前應(yīng)用最廣、效率最高,、超大規(guī)模并行計(jì)算最可信賴的平臺(tái),,幾乎被所有并行計(jì)算環(huán)境(共享和分布式存儲(chǔ)并行機(jī)、集群系統(tǒng)等)和流行的多進(jìn)程操作系統(tǒng)(UNIX,、Linux,、Windows NT)所支持[4],基于它開發(fā)的應(yīng)用程序具有最佳的可移植性,、功能強(qiáng)大,、性能高、適應(yīng)面廣,、使用方便,、可擴(kuò)展性好等優(yōu)點(diǎn)。
??? MPICH是MPI1.2標(biāo)準(zhǔn)的一個(gè)完全實(shí)現(xiàn),,是應(yīng)用范圍最廣的一種并行分布式環(huán)境[4,,6]。它包含一套程序設(shè)計(jì),、并行程序設(shè)計(jì),、環(huán)境組件、并行性能可視化工具及正確性等運(yùn)行環(huán)境,,提供文件并行I/O,,支持MPMD(Multiple Program Multiple Data)編程和異構(gòu)集群等。通過MPICH可以非常容易地連接現(xiàn)有的計(jì)算機(jī)組建集群進(jìn)行高性能集群計(jì)算,。
?? ?MPI消息傳遞的并行編程主要是通過調(diào)用消息傳遞庫MPI函數(shù)來進(jìn)行的[6],。它實(shí)現(xiàn)了處理機(jī)間的數(shù)據(jù)交換、并行任務(wù)之間的同步和收/發(fā)數(shù)據(jù)的功能和接口[4],,并提供同步算法和異步算法的完全支持,。
2 系統(tǒng)實(shí)現(xiàn)
2.1主從式 PC集群拓?fù)浣Y(jié)構(gòu)的實(shí)現(xiàn)

??? 計(jì)算機(jī)集群系統(tǒng),簡稱集群,,是互相連接的多個(gè)獨(dú)立計(jì)算機(jī)的集合,,整個(gè)集合作為一個(gè)單獨(dú)、統(tǒng)一的計(jì)算資源來使用[1],。這些計(jì)算機(jī)可以是單機(jī)或多處理器系統(tǒng)(PC機(jī)或工作站),每個(gè)節(jié)點(diǎn)都有自己的存儲(chǔ)器,、I/O設(shè)備和操作系統(tǒng)。集群系統(tǒng)具有可擴(kuò)展性好,、開發(fā)周期短,、對(duì)現(xiàn)有軟硬件資源繼承性好、編程性好以及投資成本小等特點(diǎn),。其中最大特點(diǎn)就是能夠?qū)崿F(xiàn)負(fù)載均衡[2,4,6],。
??? 集群主要用于并行計(jì)算,,在構(gòu)建計(jì)算集群系統(tǒng)時(shí),盡量讓所有節(jié)點(diǎn)使用相同的硬件配置,。本文實(shí)現(xiàn)的集群系統(tǒng)主要采用主從式架構(gòu)來進(jìn)行數(shù)據(jù)運(yùn)算,,如圖1所示。

?

?

??? 集群系統(tǒng)通常由若干計(jì)算機(jī)通過網(wǎng)絡(luò)連接而成,,有一臺(tái)計(jì)算機(jī)作為主節(jié)點(diǎn)(Master Node),Master上面有兩塊網(wǎng)絡(luò)接口卡(NIC),,一塊NIC擁有Public IP,,與 Internet 連接,另一塊NIC為Private IP,,與集群機(jī)連接[2],,對(duì)外負(fù)責(zé)提供集群的服務(wù)接口,對(duì)內(nèi)負(fù)責(zé)集群的管理,;其他計(jì)算機(jī)作為從節(jié)點(diǎn)(Slave Node),,采用的是private IP。Master與slave以高速網(wǎng)絡(luò)連接,,一般使用者允許從Master以RSH登入其他Node,。Master提供NIS服務(wù),作為與各Node的賬號(hào)分享[6],,Node可與Master享有相同的賬號(hào)數(shù)據(jù)庫,,以便于管理;Master還提供NFS服務(wù),,作為與各Node檔案的分享,,Node的系統(tǒng)盡量簡化,專司其職,,是計(jì)算服務(wù)的主要提供者[2,6],。
2.2 主從式并行文件I/O監(jiān)控調(diào)度策略
??? 在集群服務(wù)器系統(tǒng)中,各個(gè)節(jié)點(diǎn)需要協(xié)同工作來處理一個(gè)請(qǐng)求,,請(qǐng)求的合理分配將決定對(duì)請(qǐng)求響應(yīng)的質(zhì)量,,這就是集群系統(tǒng)中一個(gè)關(guān)鍵性的問題——負(fù)載均衡問題[7]。本文研究的集群系統(tǒng)中,,有一個(gè)監(jiān)控節(jié)點(diǎn),,主要負(fù)責(zé)監(jiān)控集群系統(tǒng)各個(gè)節(jié)點(diǎn)的負(fù)載均衡情況,以便于主節(jié)點(diǎn)及時(shí)調(diào)控任務(wù)分配,。在系統(tǒng)中,,先給系統(tǒng)中各個(gè)節(jié)點(diǎn)賦予一個(gè)任務(wù)分配時(shí)的權(quán)值Wi。監(jiān)控節(jié)點(diǎn)所監(jiān)控的各節(jié)點(diǎn)內(nèi)容如下:
??? (1)請(qǐng)求的大小,??梢砸氘?dāng)前處理時(shí)間t,,作為用一個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)處理對(duì)應(yīng)請(qǐng)求時(shí)的處理時(shí)間[7]。t與請(qǐng)求文件的長度FileLength,、請(qǐng)求的內(nèi)容Type(如請(qǐng)求網(wǎng)頁或文件的內(nèi)容,、類型)、請(qǐng)求所觸發(fā)的操作等有關(guān),,即t=g1(Type, FileLength),。一個(gè)節(jié)點(diǎn)的當(dāng)前負(fù)載可以表示為:當(dāng)前請(qǐng)求節(jié)點(diǎn)上所有請(qǐng)求的處理時(shí)間之和與這個(gè)節(jié)點(diǎn)的權(quán)值的比值,即:

???

??? (2)由于集群系統(tǒng)不同的服務(wù),,對(duì)系統(tǒng)負(fù)載影響的參數(shù)也不同,。對(duì)于Web服務(wù)、Ftp服務(wù)等,,主要是文件傳輸?shù)木W(wǎng)絡(luò)負(fù)載的影響最大,;同時(shí)由于動(dòng)態(tài)請(qǐng)求和頻繁的文件I/O操作,影響也比較大,,故節(jié)點(diǎn)的真實(shí)負(fù)載根據(jù)參考文獻(xiàn)[2]為:

???

??? 有關(guān),。故節(jié)點(diǎn)的真實(shí)負(fù)載也就和節(jié)點(diǎn)的權(quán)值、當(dāng)前節(jié)點(diǎn)負(fù)載以及新到請(qǐng)求的當(dāng)前處理時(shí)間有關(guān),。
??? 通過監(jiān)控節(jié)點(diǎn)對(duì)各個(gè)真實(shí)節(jié)點(diǎn)的網(wǎng)絡(luò)使用情況,、處理器使用情況和利用率以及內(nèi)存使用情況等參量的實(shí)時(shí)監(jiān)控和計(jì)算,讓通信和每個(gè)節(jié)點(diǎn)的帶寬使用情況關(guān)聯(lián)起來,,從而控制集群系統(tǒng)負(fù)載均衡,,并將監(jiān)控的信息顯示提供給用戶的視圖中,以更合理地分配請(qǐng)求任務(wù),。
2.3 基于MPI的主從式并行文件傳輸?shù)膶?shí)現(xiàn)
??? 如何協(xié)調(diào)各節(jié)點(diǎn)任務(wù)量,,將任務(wù)均勻分配到各計(jì)算節(jié)點(diǎn)以及各節(jié)點(diǎn)如何進(jìn)行通信是影響并行程序性能的主要因素。任務(wù)分配前,,各節(jié)點(diǎn)的負(fù)載均衡問題由前面一節(jié)的監(jiān)控調(diào)度策略控制,,具體的任務(wù)分配和請(qǐng)求轉(zhuǎn)發(fā)則由主節(jié)點(diǎn)控制,進(jìn)程通信則可由MPI提供良好的支持,。
2.3.1 程序結(jié)構(gòu)
??? (1)主節(jié)點(diǎn)處理流程
??? ①與用戶的http,、ftp、tcp等建立連接請(qǐng)求,,并處理用戶請(qǐng)求,。
??? ②從監(jiān)控節(jié)點(diǎn)獲取集群系統(tǒng)監(jiān)控信息,掌握系統(tǒng)各節(jié)點(diǎn)的負(fù)載情況,。
??? ③進(jìn)行負(fù)載均衡,、任務(wù)分配以及匯總重組相關(guān)子節(jié)點(diǎn)信息等功能。
??? 具體的處理流程圖如圖2所示,。

?

?

??? 實(shí)現(xiàn)時(shí)應(yīng)注意,,主節(jié)點(diǎn)會(huì)根據(jù)監(jiān)控節(jié)點(diǎn)提供的信息,,一方面顯示性能數(shù)據(jù)視圖,另一方面對(duì)當(dāng)前各個(gè)子節(jié)點(diǎn)的負(fù)載情況進(jìn)行編號(hào),,編號(hào)原則是以負(fù)載最輕編號(hào)最小,,相同負(fù)載情況下,隨機(jī)按序編號(hào),,編號(hào)越大,,負(fù)載越大。這樣在進(jìn)行任務(wù)分配時(shí),,也是優(yōu)先考慮編號(hào)小的節(jié)點(diǎn),,并將以文件塊為單位的剩余塊數(shù)分給這個(gè)小編號(hào)節(jié)點(diǎn)。
??? (2)子節(jié)點(diǎn)處理流程
?? ?子節(jié)點(diǎn)擁護(hù)有主節(jié)點(diǎn)的文件系統(tǒng)目錄列表信息,,可以提供相應(yīng)的文件數(shù)據(jù)服務(wù),。它接收主節(jié)點(diǎn)的任務(wù)分配,,并緩存到自己的任務(wù)隊(duì)列中,;同時(shí)向監(jiān)控節(jié)點(diǎn)報(bào)告自己的負(fù)載的相關(guān)信息。當(dāng)子節(jié)點(diǎn)的任務(wù)隊(duì)列不為空時(shí),,就依次從該隊(duì)列中取出任務(wù),,并與客戶端建立連接,進(jìn)行數(shù)據(jù)傳輸服務(wù),。具體處理流程圖如圖3所示,。

?

??? 實(shí)際操作時(shí),當(dāng)并行文件操作的各個(gè)子節(jié)點(diǎn)在向客戶進(jìn)行數(shù)據(jù)傳輸時(shí),,注意要合理地重組好文件,,也就是在并行程序?qū)崿F(xiàn)時(shí),必須注意文件指針的操作問題,。
2.3.2 任務(wù)分配
??? 本集群系統(tǒng)中,,主節(jié)點(diǎn)維護(hù)一個(gè)完整的面向緩存的文件系統(tǒng)目錄列表、真實(shí)文件系統(tǒng)和數(shù)據(jù)信息,。完成的功能有:
??? (1)面向具體的客戶端:負(fù)責(zé)客戶端請(qǐng)求連接與斷開,;同時(shí)當(dāng)主節(jié)點(diǎn)接收到來自客戶端的第一次文件傳輸請(qǐng)求時(shí),就立即將本節(jié)點(diǎn)上的文件系統(tǒng)中所有的目錄列表信息返回給客戶,。
??? (2)面向集群系統(tǒng)中各個(gè)子節(jié)點(diǎn):如果主節(jié)點(diǎn)接收到的客戶端信息為下載傳輸具體文件時(shí),,則根據(jù)監(jiān)控節(jié)點(diǎn)的具體反饋信息,對(duì)子節(jié)點(diǎn)進(jìn)行負(fù)載均衡,,然后對(duì)客戶請(qǐng)求進(jìn)行任務(wù)分解和請(qǐng)求轉(zhuǎn)發(fā),,動(dòng)態(tài)調(diào)度各個(gè)子節(jié)點(diǎn),由各個(gè)子節(jié)點(diǎn)并行提供數(shù)據(jù)服務(wù),。
??? (3)面向監(jiān)控節(jié)點(diǎn):主節(jié)點(diǎn)在對(duì)客戶任務(wù)進(jìn)行動(dòng)態(tài)分解之前,,首先根據(jù)監(jiān)控節(jié)點(diǎn)反饋信息,,了解各子節(jié)點(diǎn)負(fù)載情況,然后遵循集群系統(tǒng)中最輕負(fù)載節(jié)點(diǎn)優(yōu)先調(diào)度的原則,,進(jìn)行任務(wù)分配和請(qǐng)求轉(zhuǎn)發(fā),;同時(shí)將監(jiān)控的信息以用戶視圖的形式動(dòng)態(tài)顯示出來。
??? 為了緩解主節(jié)點(diǎn)和子節(jié)點(diǎn)之間的通信量,,系統(tǒng)中其他子節(jié)點(diǎn)也同樣擁有簡化的輕量級(jí)的主節(jié)點(diǎn)文件目錄索引表以及文件數(shù)據(jù),。子節(jié)點(diǎn)擁有一個(gè)任務(wù)隊(duì)列,用于緩存分配到的各個(gè)任務(wù),,主節(jié)點(diǎn)也擁有一個(gè)面向客戶端的請(qǐng)求隊(duì)列和面向子節(jié)點(diǎn)的任務(wù)分配隊(duì)列,,用于并行化操作。同時(shí)系統(tǒng)中主節(jié)點(diǎn)根據(jù)監(jiān)控節(jié)點(diǎn)的反饋信息,,及時(shí)地對(duì)系統(tǒng)中的各個(gè)子節(jié)點(diǎn)按負(fù)載大小進(jìn)行編號(hào),,用rank來表示。
??? 本系統(tǒng)實(shí)現(xiàn)的是基于MPI的主從式并行文件傳輸,,并行化操作具體到各個(gè)文件傳輸和I/O上,,采用的任務(wù)分配策略為“塊分配”策略,即將各個(gè)具體文件操作連續(xù)地分成若干任務(wù)塊[4],,集群中每個(gè)子節(jié)點(diǎn)負(fù)責(zé)一個(gè)塊的操作,。
??? 假設(shè)一個(gè)文件大小為fileSize,集群子節(jié)點(diǎn)的個(gè)數(shù)為nodeNo,。為了實(shí)現(xiàn)并行化文件操作,,首先計(jì)算出各個(gè)子節(jié)點(diǎn)至少分配到的文件塊大小AveFileSize,即:
???
??? 如果子節(jié)點(diǎn)的個(gè)數(shù)不能整除文件大小,,則有:
??? HeavyNodeSize=fileSize MOD nodeNo
??? 將文件剩余為HeavyNodeSize大小的塊分給集群系統(tǒng)中最輕量級(jí)負(fù)載的子節(jié)點(diǎn),,也即當(dāng)前時(shí)刻系統(tǒng)中編號(hào)最小的那個(gè)子節(jié)點(diǎn)。這樣編號(hào)為rank的子節(jié)點(diǎn)分得的文件塊大小為:

???

???

??? 有了各個(gè)節(jié)點(diǎn)分配的塊大小,,就可以進(jìn)行任務(wù)分配,。
3 性能測試
??? 測試環(huán)境為具有六個(gè)CPU的集群服務(wù)器系統(tǒng),其中一個(gè)作為主節(jié)點(diǎn),,一個(gè)作為監(jiān)控節(jié)點(diǎn),,其余四個(gè)作為服務(wù)子節(jié)點(diǎn)。本系統(tǒng)選擇了對(duì)MB以上文件請(qǐng)求的服務(wù)情況,,測試結(jié)果如圖4所示,。

?


??? 系統(tǒng)中,由于引入了負(fù)載均衡策略,,系統(tǒng)能夠動(dòng)態(tài)地調(diào)度各子節(jié)點(diǎn),,進(jìn)行任務(wù)分配和請(qǐng)求轉(zhuǎn)發(fā),最大程度地提高了系統(tǒng)資源利用率和服務(wù)器的性能。通過集群系統(tǒng)的并行化操作,,大大縮短了傳統(tǒng)多對(duì)一模式時(shí)對(duì)多個(gè)客戶端請(qǐng)求大文件傳輸時(shí)的服務(wù)時(shí)間,。利用MPI不連續(xù)發(fā)送功能和消息接口通信功能,有效縮減了系統(tǒng)通信量,。同時(shí)隨著系統(tǒng)服務(wù)節(jié)點(diǎn)數(shù)的增多,,相應(yīng)地減小了大文件的操作時(shí)間,提高了用戶響應(yīng)速率,。
??? 本文研究并實(shí)現(xiàn)了基于PC機(jī)集群系統(tǒng)的MPI主從式并行文件I/O系統(tǒng),。該系統(tǒng)中,某個(gè)節(jié)點(diǎn)如果出現(xiàn)故障,,不會(huì)影響到系統(tǒng)其他服務(wù),,并由系統(tǒng)及時(shí)將故障部分任務(wù)重新分配,可靠性高,。系統(tǒng)性能測試表明,,本系統(tǒng)具有很好的可擴(kuò)展性和很高的性價(jià)比。如何將計(jì)算智能用于本系統(tǒng),,以改進(jìn)其調(diào)度的性能并增強(qiáng)系統(tǒng)的魯棒性,,將是下一步的研究內(nèi)容。

參考文獻(xiàn)
[1] ?DIETZ H. Linux parallel processing[J/OL]. v980105,5 January 1998.
[2] ?章文嵩.Linux服務(wù)器集群系統(tǒng)[J/OL]. http://www-900.ibm.com/developerWorks/cn/linux/cluster/lvs/part1/.2002-04.
[3] ?HWANG K, XU Z. Scalable parallel computing: Technology, Architecture, Programming [M]. WCB/McGrawHill,,NY,1998.
[4] ?SIMITCI H. Pablo MPI instrumentation user guide. Technical Report, University of Illinois Urbana at Urbana Champaign, 1996.
[5] ?劉華,,徐煒民,,孫強(qiáng).基于MPI并行程序的性能評(píng)測可視化工具[J]. 計(jì)算機(jī)工程,, 2004,30(10).
[6] ?王瑩,,屈一新. PC集群的建立與MPI并行環(huán)境的實(shí)現(xiàn)及其應(yīng)用[J].北京化工大學(xué)學(xué)報(bào),, 2001,28(4).
[7] ?任彥琦,,彭勤科,,胡保生.一種基于內(nèi)容的Web集群服務(wù)器負(fù)載均衡算法[J].計(jì)算機(jī)工程, 2005,,31(2).

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。