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

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

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

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

?

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

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

?

?

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

???

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

???

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

?

?

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

?

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

???

???

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

?


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

參考文獻
[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] ?劉華,徐煒民,孫強.基于MPI并行程序的性能評測可視化工具[J]. 計算機工程, 2004,30(10).
[6] ?王瑩,屈一新. PC集群的建立與MPI并行環(huán)境的實現(xiàn)及其應(yīng)用[J].北京化工大學(xué)學(xué)報, 2001,28(4).
[7] ?任彥琦,彭勤科,胡保生.一種基于內(nèi)容的Web集群服務(wù)器負(fù)載均衡算法[J].計算機工程, 2005,31(2).

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