專利名稱:面向通信的分組并行輸入/輸出服務(wù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域中的輸入/輸出技術(shù),即I/O技術(shù),尤其是大規(guī)模并行處理系統(tǒng)中的并行I/O服務(wù)方法。
背景技術(shù):
由于微處理器技術(shù)和磁盤I/O技術(shù)間發(fā)展的不平衡,I/O已成為目前制約大規(guī)模并行計(jì)算機(jī)系統(tǒng)整體性能發(fā)揮的主要瓶頸之一,采用并行I/O技術(shù)是緩解該瓶頸的一種重要技術(shù)手段。大規(guī)模并行計(jì)算機(jī)系統(tǒng)通過并行文件系統(tǒng)將文件分布存放于多個I/O結(jié)點(diǎn)的磁盤上,并通過多I/O通道和并行化的磁盤I/O服務(wù)來提供高性能的并行I/O服務(wù)。
目前主流的并行I/O子系統(tǒng)結(jié)構(gòu)可分為集中式并行I/O結(jié)構(gòu)和分布式并行I/O結(jié)構(gòu)。高性能計(jì)算機(jī)系統(tǒng)中的結(jié)點(diǎn)根據(jù)其主要功能可劃分為處理結(jié)點(diǎn)(PN)和I/O結(jié)點(diǎn)(ION)。PN主要負(fù)責(zé)計(jì)算任務(wù),其上運(yùn)行用戶應(yīng)用。ION帶磁盤,主要負(fù)責(zé)處理PN的I/O請求。在集中式并行I/C結(jié)構(gòu)中,PN和ION結(jié)點(diǎn)結(jié)構(gòu)不同PN不帶磁盤,只負(fù)責(zé)計(jì)算任務(wù);ION帶磁盤,只負(fù)責(zé)I/O任務(wù)。ION和PN通過高速互聯(lián)網(wǎng)通信。在分布式I/O結(jié)構(gòu)中,ION和PN結(jié)點(diǎn)結(jié)構(gòu)相同,ION和PN的功能不明確劃分,每個處理器既可以運(yùn)行用戶應(yīng)用,也可以掛磁盤處理I/O訪問。
雖然并行I/O子系統(tǒng)提供了巨大的原始I/O訪問帶寬,但在實(shí)際應(yīng)用中,由于用戶I/O訪問模式千差萬別,不同應(yīng)用環(huán)境下用戶所能獲得的實(shí)際I/O帶寬與系統(tǒng)提供的原始帶寬相差甚遠(yuǎn)。因此,針對不同的應(yīng)用環(huán)境研究合適的I/O服務(wù)方法是提高并行I/O系統(tǒng)服務(wù)性能的關(guān)鍵。
目前的并行I/O服務(wù)方法主要有三種傳統(tǒng)cache方法、兩階段服務(wù)方法和面向磁盤的并行I/O方法。
1、最傳統(tǒng)的并行I/O服務(wù)方法是文件系統(tǒng)中常用的cache方法。在cache方法中,I/O請求首先訪問計(jì)算結(jié)點(diǎn)和I/O結(jié)點(diǎn)的內(nèi)存cache,如cache中緩沖有用戶要訪問的數(shù)據(jù)則立即返回用戶,不存在則繼續(xù)訪問磁盤。由于科學(xué)計(jì)算I/O請求尺寸一般較大,并行文件系統(tǒng)的內(nèi)存cache命中率往往較低,I/O服務(wù)性能較低。
2、J.del Rosario根據(jù)并行科學(xué)計(jì)算應(yīng)用I/O訪問規(guī)律性較強(qiáng)的特點(diǎn),1993年11月在Computer Architechure News上發(fā)表的《Improving Parallel I/O Performanceusing Two-Phase Access Strategy》(采用兩階段訪問策略來提高并行I/O服務(wù)性能)論文中提出了兩階段服務(wù)方法。該方法將I/O服務(wù)過程分為兩個階段I/O結(jié)點(diǎn)的順序I/O階段和計(jì)算結(jié)點(diǎn)間的數(shù)據(jù)重分布階段。兩階段服務(wù)方法利用磁盤順序訪問速度快的特性獲得了較大的磁盤帶寬,但浪費(fèi)了寶貴的計(jì)算結(jié)點(diǎn)內(nèi)存,并且在數(shù)據(jù)重分布階段易產(chǎn)生信息阻塞。這種方法只適合于大數(shù)據(jù)量的集束式I/O(Collecttive I/O,CIO)操作。
3、David Kotz在1994年7月發(fā)表的技術(shù)報告《Disk-directed I/O for MIMDMultiprocessors》(面向MIMD多處理器的面向磁盤的I/O服務(wù)方法)中提出了面向磁盤的并行I/O服務(wù)方法。面向磁盤的并行I/O服務(wù)方法基于大規(guī)模并行科學(xué)計(jì)算應(yīng)用的I/O訪問同步性強(qiáng)、I/O請求尺寸大的特點(diǎn),根據(jù)數(shù)據(jù)在磁盤上的物理分布調(diào)度請求,獲得了較高的磁盤帶寬。采用面向磁盤的并行I/O服務(wù)方法的并行文件系統(tǒng)有Y.Chen等開發(fā)的PANDA和Nils Nieuwejaar開發(fā)的Galley等并行文件系統(tǒng)。但面向磁盤的并行I/O服務(wù)方法依然有許多局限,主要體現(xiàn)在a)面向磁盤的并行I/O服務(wù)方法僅對大尺寸訪問提供大帶寬服務(wù),但對小尺寸訪問的延遲特性改善不大。減少應(yīng)用執(zhí)行時間是根本目的,此方法不能兼顧滿足I/O服務(wù)低延遲和大帶寬這兩個目標(biāo)。
b)面向磁盤的并行I/O服務(wù)方法及其操作接口不提供對不同文件、不同訪問模式的優(yōu)化,并且僅支持單程序流多數(shù)據(jù)流(SPMD)編程方式,無法支持多程序流多數(shù)據(jù)流(MPMD)編程方式。
c)面向磁盤的并行I/O服務(wù)方法產(chǎn)生的消息量較大。目前,磁盤性能有了很大提高,磁盤對連續(xù)數(shù)據(jù)的訪問速度與高速互聯(lián)網(wǎng)的用戶實(shí)際性能已相近。當(dāng)用戶訪問小尺寸分散數(shù)據(jù)時,由于此時面向磁盤的并行I/O服務(wù)方法所產(chǎn)生的大量網(wǎng)絡(luò)消息將使網(wǎng)絡(luò)傳輸開銷遠(yuǎn)大于磁盤訪問開銷,網(wǎng)絡(luò)通信成為新的瓶頸。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對上述現(xiàn)有并行I/O服務(wù)方法的局限,基于現(xiàn)有磁盤和通信系統(tǒng)的性能,提出一種面向通信的分組并行I/O服務(wù)方法(Communication Directed Group Input Output,CDGIO),有效提高對小尺寸、分散數(shù)據(jù)的訪問性能;同時提供對不同文件、不同訪問模式的優(yōu)化,既支持SPMD編程方式,又支持MPMD編程方式;利用多線程機(jī)制,采用將大量小尺寸消息分組打包的傳送方式,在一定程度上克服面向磁盤的并行I/O服務(wù)方法的通信瓶頸,提供較高的I/O整體服務(wù)性能。
本發(fā)明的技術(shù)方案是面向通信,兼顧磁盤性能和通信帶寬的關(guān)系,針對并行科學(xué)計(jì)算中大尺寸集中訪問和小尺寸分散訪問同時存在的特點(diǎn),在高性能計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)中設(shè)計(jì)通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu),通過面向通信的分組打包傳輸機(jī)制減少消息量,降低通信開銷,使磁盤訪問較好地覆蓋通信操作,從而減少整體I/O服務(wù)時間,獲得較優(yōu)的I/O服務(wù)性能。
本發(fā)明的系統(tǒng)結(jié)構(gòu)在傳統(tǒng)PN結(jié)點(diǎn)和ION結(jié)點(diǎn)的基礎(chǔ)上,增加了通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu)。通信組是若干PN的集合,設(shè)計(jì)時組內(nèi)PN的通信方式采用具有較高傳輸帶寬和較低傳輸延遲的緊耦合通信方式,通信組間的通信方式則采用較松散的通信方式。組內(nèi)的通信帶寬和延遲優(yōu)于通信組間的帶寬和延遲,且同一通信組內(nèi)的通信不干擾其他通信組內(nèi)部的信息傳輸。通信組數(shù)目為所有處理結(jié)點(diǎn)數(shù)的平方根值。每一通信組有一個通信組組長結(jié)點(diǎn),組長結(jié)點(diǎn)一般選取本通信組中PN號最小的PN結(jié)點(diǎn),也可靈活選擇任意PN結(jié)點(diǎn)。通信組組長結(jié)點(diǎn)上運(yùn)行接收線程和解包/轉(zhuǎn)發(fā)線程,負(fù)責(zé)全組與ION間的通信和數(shù)據(jù)的重分布工作。本發(fā)明的主結(jié)點(diǎn)可選取任意PN結(jié)點(diǎn)擔(dān)任,其上運(yùn)行集束式I/O(CIO,Collecttive I/O)操作的接口處理線程。該線程負(fù)責(zé)所有參加CIO操作的I/O請求同步。當(dāng)各PN通過CIO操作接口發(fā)出請求時,所有請求先發(fā)送到主結(jié)點(diǎn)。當(dāng)參加CIO操作的所有PN的請求到達(dá)后,主結(jié)點(diǎn)把各PN的請求匯集成一個大數(shù)據(jù)包廣播給所有ION。完成所有I/O請求服務(wù)的ION也將向主結(jié)點(diǎn)發(fā)送完畢信號。當(dāng)所有ION的完畢信號到達(dá)后,主結(jié)點(diǎn)向各PN廣播完畢信號,各PN結(jié)束本次CIO操作。
本發(fā)明基于通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu),通過CIO操作接口的同步作用獲得較大的磁盤訪問帶寬,將讀操作和寫操作分別處理,在讀操作和寫操作中均采用分組打包的消息傳輸方式來減少現(xiàn)有并行I/O服務(wù)方法中對小尺寸、分散數(shù)據(jù)訪問時的大量小尺寸消息,從而避免網(wǎng)絡(luò)通信瓶頸。讀操作具體過程是
1.各個PN結(jié)點(diǎn)將讀請求發(fā)往主結(jié)點(diǎn)。
2.主結(jié)點(diǎn)檢測屬于同一GIO操作組的PN請求是否全部到達(dá),當(dāng)參加GIO操作的所有PN的讀請求到達(dá)主結(jié)點(diǎn)后,主結(jié)點(diǎn)的CIO接口同步線程同步各PN的讀請求后匯集成一個大數(shù)據(jù)包廣播給所有ION。
3.各ION結(jié)點(diǎn)查詢本結(jié)點(diǎn)的元數(shù)據(jù)服務(wù)器,根據(jù)元數(shù)據(jù)服務(wù)器提供的本結(jié)點(diǎn)文件元信息以及數(shù)據(jù)在磁盤上物理分布信息調(diào)度各讀請求,以磁盤數(shù)據(jù)順序分布的序列來訪問磁盤數(shù)據(jù)從而獲得最優(yōu)的訪問性能。
4.各ION結(jié)點(diǎn)基于多線程采用流水處理方式將讀取的數(shù)據(jù)以通信組為單位打包發(fā)往通信組組長,每個ION開辟兩塊數(shù)據(jù)緩沖區(qū)用于流水方式的數(shù)據(jù)發(fā)送,磁盤I/O線程根據(jù)調(diào)度后的請求序列從磁盤讀取數(shù)據(jù)到空閑數(shù)據(jù)緩沖區(qū)中;發(fā)送線程根據(jù)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)覆蓋的PN數(shù)確定是否采用分組方式發(fā)送到PN結(jié)點(diǎn)處,當(dāng)覆蓋數(shù)超過門坎值 時采用分組方式發(fā)送,不超過門檻值 ION則只將屬于同一PN的分散數(shù)據(jù)打包后直接發(fā)送至該P(yáng)N處,門坎值 由通信開銷同磁盤開銷比確定tdisk和tnet_bandwidth分別為磁盤讀取一塊緩沖區(qū)的時間和高速互連網(wǎng)絡(luò)的傳輸帶寬,sblk為文件數(shù)據(jù)塊尺寸,tnet_setup為一個數(shù)據(jù)包的通信建立時間。
τ=(tdisk-sblk/tnet_bandwidth)/tnet_setup由于高速互聯(lián)網(wǎng)的傳輸帶寬較大,故上公式的網(wǎng)絡(luò)傳輸開銷可忽略不計(jì), 值可由下式近似確定。
τ≈tdisk/tnet_setup當(dāng)數(shù)據(jù)細(xì)粒度分布時,一塊緩沖區(qū)所覆蓋PN數(shù)往往超過門坎值 消息發(fā)送開銷將大于磁盤開銷,磁盤操作無法掩蓋通信。當(dāng)數(shù)據(jù)的PN覆蓋數(shù)超過門坎值 時,本發(fā)明采用分組發(fā)送方式,各ION將屬于同一通信組的數(shù)據(jù)打成一個消息包發(fā)送給通信組長;當(dāng)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)覆蓋的PN數(shù)小于該門坎值 時,磁盤操作可以掩蓋通信操作,本發(fā)明不執(zhí)行分組功能,即每個PN為一組,各ION只將屬于同一PN的數(shù)據(jù)打包發(fā)送。當(dāng)多個ION同時按相同的順序向多個PN發(fā)送數(shù)據(jù)時,接收方很可能產(chǎn)生接收沖突。為了消除沖突,本發(fā)明在向各通信組長發(fā)送數(shù)據(jù)時采用循環(huán)式流水消息發(fā)送方式。由于CIO操作的同步性特點(diǎn),各個ION幾乎在同一時刻讀取完數(shù)據(jù),并向各個通信組長發(fā)送消息。此時多個ION同時按相同的順序向多個PN發(fā)送數(shù)據(jù)時,接收方很可能產(chǎn)生接收沖突。本發(fā)送方式中,每一個ION分別以自己的序號作為起始的PN發(fā)送號,例如ION1從PN1開始依次向PN2、PN3發(fā)送,ION2則從PN2開始依次向PN3、PN4循環(huán)發(fā)送。由于起始發(fā)送結(jié)點(diǎn)不同,就避免了當(dāng)多個ION均以PN1為第一個發(fā)送對象時,由于PN1同一時刻只能接收一個消息(ION1的),所以ION2必須延遲等待PN1接收完畢ION1的數(shù)據(jù)后才能開始發(fā)送的等待情況。
5.在本發(fā)明分組發(fā)送方式中,通信組長采用多線程流水處理技術(shù)接收和轉(zhuǎn)發(fā)屬于該組其他成員的數(shù)據(jù)通信組長開辟兩塊數(shù)據(jù)緩沖區(qū)分別用于接收數(shù)據(jù)和解包、發(fā)送數(shù)據(jù);接收線程接收到一塊數(shù)據(jù)后,通知解包發(fā)送線程解包;解包發(fā)送線程根據(jù)數(shù)據(jù)頭的目的地信息決定該段數(shù)據(jù)是本地?cái)?shù)據(jù)還是其他PN的數(shù)據(jù),本地?cái)?shù)據(jù)則直接寫入用戶緩沖區(qū),非本地?cái)?shù)據(jù)則發(fā)送至目的結(jié)點(diǎn);目的PN結(jié)點(diǎn)按與通信組長相同的方法接收、解包數(shù)據(jù)。
6.在本發(fā)明非分組發(fā)送方式中,ION直接發(fā)送數(shù)據(jù)至各PN結(jié)點(diǎn),各PN結(jié)點(diǎn)采用雙緩沖區(qū)結(jié)構(gòu),通過多線程技術(shù)流水并行接收和解包數(shù)據(jù),此時無轉(zhuǎn)發(fā)過程。
本發(fā)明對于寫操作請求的處理同樣采用分組打包的消息傳輸方式,具體過程是1)參加CIO操作的各個PN結(jié)點(diǎn)將寫請求發(fā)送到主結(jié)點(diǎn)處同步。
2)當(dāng)所有參加CIO操作的寫請求到達(dá)后,主結(jié)點(diǎn)將各PN的寫請求合并后廣播給所有ION。
3)ION結(jié)點(diǎn)根據(jù)本地元數(shù)據(jù)服務(wù)器提供的文件分布信息,確定哪個PN的數(shù)據(jù)將寫入本ION。
4)ION將上述數(shù)據(jù)元信息廣播給所有的PN結(jié)點(diǎn)。
5)當(dāng)參加本次CIO操作的PN數(shù)超過門坎值 時,本發(fā)明采用分組打包傳輸方式當(dāng)PN數(shù)小于門坎值 時,本發(fā)明采取直接發(fā)送的辦法i.分組方式中,各PN將要寫入的數(shù)據(jù)作為一個整體發(fā)送至本組的通信組長處。發(fā)送時,各PN采用雙線程和雙緩沖區(qū)的并行發(fā)送技術(shù)將分布于用戶緩沖區(qū)中的分散數(shù)據(jù)打包后傳輸。通信組長采用多線程流水處理技術(shù)接收和轉(zhuǎn)發(fā)屬于該組其他成員的數(shù)據(jù)通信組長開辟兩塊數(shù)據(jù)緩沖區(qū)分別用于接收數(shù)據(jù)和解包、發(fā)送數(shù)據(jù);接收線程接收到一塊數(shù)據(jù)后,通知解包發(fā)送線程解包;解包發(fā)送線程根據(jù)數(shù)據(jù)頭的目的地信息將數(shù)據(jù)解包,并根據(jù)其目的ION重新打包后轉(zhuǎn)發(fā)至目的ION處。
ii.直接方式中,各PN將屬于同一ION的數(shù)據(jù)打包后統(tǒng)一發(fā)送至目的ION。
6)無論分組或直接方式,ION結(jié)點(diǎn)都利用雙緩沖區(qū)機(jī)制并發(fā)地接收、解包和調(diào)度數(shù)據(jù),最后一次性寫入磁盤。
同現(xiàn)有的其它并行I/O方法相比,采用本發(fā)明可以達(dá)到以下的技術(shù)效果1、采用打包方式減少了通信的消息量。在非分組方式中,采用打包技術(shù)將用戶空間不連續(xù)的數(shù)據(jù)段用一個數(shù)據(jù)包發(fā)送,減少了消息數(shù);在分組方式中,以通信組為單位將屬于多PN的數(shù)據(jù)打包發(fā)送減少了一塊數(shù)據(jù)要串行通信的消息數(shù),大大減少了通信建立時間。
2、采用多線程流水技術(shù),通過雙緩沖區(qū)并發(fā)磁盤I/O操作和網(wǎng)絡(luò)傳輸,有效掩蓋了轉(zhuǎn)發(fā)開銷,實(shí)現(xiàn)了通信和磁盤操作的并行化。
3、靈活地融分組和非分組方式為一體,基于磁盤數(shù)據(jù)的分布信息來調(diào)度I/O請求,有效解決了通信瓶頸問題,減少了I/O訪問的服務(wù)時間,提高了并行文件系統(tǒng)的整體服務(wù)性能。
4、本發(fā)明將屬于同一PN的分散數(shù)據(jù)合并后打包傳輸,減少了通信消息量,解決了面向磁盤的并行I/O服務(wù)方法中屬于同一PN的不連續(xù)數(shù)據(jù)段會產(chǎn)生多個網(wǎng)絡(luò)消息的缺陷。
5、本發(fā)明基于空間換取時間的原理,通過占用PN結(jié)點(diǎn)的若干K字節(jié)內(nèi)存作為雙緩沖區(qū)和少量的PN結(jié)點(diǎn)作為通信組組長實(shí)現(xiàn)中轉(zhuǎn)服務(wù),獲得了較高的IO服務(wù)性能。
圖1是傳統(tǒng)的高性能計(jì)算機(jī)系統(tǒng)并行I/O系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明并行I/O服務(wù)方法的系統(tǒng)結(jié)構(gòu)圖;圖3是本發(fā)明讀操作服務(wù)流程圖;圖4是本發(fā)明寫操作服務(wù)流程圖;圖5是本發(fā)明流水線式消息循環(huán)發(fā)送示意圖;圖6是本發(fā)明同面向磁盤的并行I/O服務(wù)方法的性能測試對比圖。
具體實(shí)施例方式
圖1是當(dāng)前主流的高性能計(jì)算機(jī)系統(tǒng)并行I/O系統(tǒng)結(jié)構(gòu)圖。高性能計(jì)算機(jī)系統(tǒng)中的結(jié)點(diǎn)根據(jù)其主要的功能劃分為處理結(jié)點(diǎn)(PN)和I/O結(jié)點(diǎn)(ION)。PN主要負(fù)責(zé)計(jì)算任務(wù),其上運(yùn)行用戶應(yīng)用。PN向ION發(fā)出I/O請求。ION帶磁盤,主要負(fù)責(zé)處理PN的I/O請求。高性能計(jì)算機(jī)系統(tǒng)的并行I/O結(jié)構(gòu)按ION和PN的關(guān)系分為集中式并行I/O結(jié)構(gòu)(如圖1(a)所示)和分布式并行I/O結(jié)構(gòu)(如圖1(b)所示)。在集中式并行I/O結(jié)構(gòu)中,PN不帶磁盤,只負(fù)責(zé)計(jì)算任務(wù);ION帶磁盤,專門負(fù)責(zé)I/O任務(wù),不執(zhí)行任何用戶應(yīng)用。ION和PN通過高速互聯(lián)網(wǎng)通信,服務(wù)PN發(fā)出的I/O請求。在分布式I/O結(jié)構(gòu)中,ION和PN的功能不明確劃分,每個處理器既可以運(yùn)行用戶應(yīng)用,也可以掛磁盤處理I/O訪問。
圖2是本發(fā)明并行I/O服務(wù)方法的系統(tǒng)結(jié)構(gòu)圖。在PN結(jié)點(diǎn)和ION結(jié)點(diǎn)的基礎(chǔ)上,本發(fā)明新增了通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu)。通信組是若干PN的集合,設(shè)計(jì)時通信組內(nèi)的通信帶寬和延遲將優(yōu)于通信組間的帶寬和延遲,且同一通信組內(nèi)的通信不干擾其他通信組內(nèi)部的信息傳輸。圖中一個虛線框內(nèi)的所有PN結(jié)點(diǎn)就是一個通信組,組內(nèi)PN的通信方式采用具有較高傳輸帶寬和較低傳輸延遲的緊耦合通信方式,通信組間的通信方式則采用較松散的通信方式。通信組數(shù)目為所有PN總數(shù)的平方根值。每一通信組有一個通信組組長,組長由本通信組中最小PN號的PN結(jié)點(diǎn)來擔(dān)任,圖中黑色的PN結(jié)點(diǎn)即是通信組組長。通信組組長結(jié)點(diǎn)上運(yùn)行接收線程和解包/轉(zhuǎn)發(fā)線程,負(fù)責(zé)全組與ION間的通信和數(shù)據(jù)的重分布工作。圖中白色的PN結(jié)點(diǎn)是主結(jié)點(diǎn),主結(jié)點(diǎn)上運(yùn)行CIO操作同步線程,負(fù)責(zé)CIO請求的同步。當(dāng)各PN通過CIO操作接口發(fā)出請求時,所有請求將先發(fā)送到主結(jié)點(diǎn),由主結(jié)點(diǎn)負(fù)責(zé)同步。當(dāng)參加CIO操作的所有PN的請求到達(dá)后,主結(jié)點(diǎn)把各PN的請求匯集成一個大數(shù)據(jù)包廣播給所有ION。完成所有I/O請求服務(wù)的ION也向主結(jié)點(diǎn)發(fā)送完畢信號。當(dāng)所有ION的完畢信息到達(dá)后,主結(jié)點(diǎn)向各PN廣播完畢信號,各PN結(jié)束本次CIO操作。
圖3說明了本發(fā)明讀操作的服務(wù)總流程。讀操作過程如下1)參加CIO操作的各個PN結(jié)點(diǎn)將讀請求發(fā)往主結(jié)點(diǎn);2)主結(jié)點(diǎn)檢測屬于同一CIO操作的PN請求是否全部到達(dá),當(dāng)參加CIO操作的所有PN的讀請求到達(dá)主結(jié)點(diǎn)后,主結(jié)點(diǎn)的CIO接口同步線程同步各PN的讀請求后匯集成一個大數(shù)據(jù)包廣播給所有ION;3)各ION結(jié)點(diǎn)查詢本結(jié)點(diǎn)的元數(shù)據(jù)服務(wù)器,根據(jù)元數(shù)據(jù)服務(wù)器提供的本結(jié)點(diǎn)文件元信息以及數(shù)據(jù)在磁盤上物理分布信息調(diào)度各讀請求,以磁盤數(shù)據(jù)順序分布的序列訪問數(shù)據(jù)來獲得最優(yōu)的磁盤I/O性能;4)各ION結(jié)點(diǎn)基于多線程采用流水處理方式將讀取的數(shù)據(jù)以通信組為單位打包發(fā)往通信組組長,每個ION開辟兩塊數(shù)據(jù)緩沖區(qū)用于流水方式的數(shù)據(jù)發(fā)送磁盤I/O線程根據(jù)調(diào)度后的請求序列從磁盤讀取數(shù)據(jù)到空閑數(shù)據(jù)緩沖區(qū)中;發(fā)送線程根據(jù)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)覆蓋的PN數(shù)是否超過門坎值 來確定是否采用分組方式發(fā)送當(dāng)數(shù)據(jù)的PN覆蓋數(shù)超過門坎值 時,本發(fā)明采用分組發(fā)送方式,各ION將屬于同一通信組的數(shù)據(jù)打成一個消息包發(fā)送給通信組長;當(dāng)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)覆蓋的PN數(shù)小于該門坎值 時,磁盤操作可以掩蓋通信操作,本發(fā)明不執(zhí)行分組功能,即每個PN為一組。
5)在本發(fā)明分組發(fā)送方式中,通信組長采用多線程流水處理技術(shù)接收和轉(zhuǎn)發(fā)屬于該組其他成員的數(shù)據(jù)通信組長開辟兩塊數(shù)據(jù)緩沖區(qū)分別用于接收數(shù)據(jù)和解包、發(fā)送數(shù)據(jù);接收線程接收到一塊數(shù)據(jù)后,通知解包/發(fā)送線程解包數(shù)據(jù);解包/發(fā)送線程根據(jù)數(shù)據(jù)頭的目的地信息決定該段數(shù)據(jù)是本地?cái)?shù)據(jù)還是其他PN的數(shù)據(jù),本地?cái)?shù)據(jù)則直接寫入用戶緩沖區(qū),非本地?cái)?shù)據(jù)則發(fā)送至目的結(jié)點(diǎn);目的PN結(jié)點(diǎn)按與通信組長相同的方法接收、解包數(shù)據(jù)。
6)在本發(fā)明非分組發(fā)送方式中,ION直接發(fā)送數(shù)據(jù)至各PN結(jié)點(diǎn),各PN結(jié)點(diǎn)采用雙緩沖區(qū)結(jié)構(gòu),通過多線程技術(shù)流水并行接收和解包數(shù)據(jù),此時無轉(zhuǎn)發(fā)過程。
圖4說明了本發(fā)明寫操作的服務(wù)總流程。寫操作是讀操作的逆過程。寫操作同樣采用了分組打包技術(shù),具體方法如下1)參加CIO操作的各個PN結(jié)點(diǎn)將寫請求發(fā)送到主結(jié)點(diǎn)處同步。
2)當(dāng)所有參加CIO操作的寫請求到達(dá)后,主結(jié)點(diǎn)將各寫請求合并后廣播給所有ION。
3)ION結(jié)點(diǎn)根據(jù)本地元數(shù)據(jù)服務(wù)器提供的文件分布信息,確定哪個PN的數(shù)據(jù)將寫入本ION。
4)ION將上述數(shù)據(jù)元信息廣播給所有的PN結(jié)點(diǎn)。
5)當(dāng)參加本次CIO操作的PN數(shù)超過門坎值 時,本發(fā)明采用分組打包傳輸方式;當(dāng)PN數(shù)小于門坎值 時,本發(fā)明采取直接發(fā)送的辦法i.分組方式中,各PN將要寫入的數(shù)據(jù)作為一個整體發(fā)送至本組的通信組長處。發(fā)送時,各PN采用雙線程和雙緩沖區(qū)的并行發(fā)送技術(shù)將分布于用戶緩沖區(qū)中的分散數(shù)據(jù)打包后傳輸。通信組長采用多線程流水處理技術(shù)接收和轉(zhuǎn)發(fā)屬于該組其他成員的數(shù)據(jù)通信組長開辟兩塊數(shù)據(jù)緩沖區(qū)分別用于接收數(shù)據(jù)和解包、發(fā)送數(shù)據(jù);接收線程接收到一塊數(shù)據(jù)后,通知解包/發(fā)送線程解包;解包/發(fā)送線程根據(jù)數(shù)據(jù)頭的目的地信息將數(shù)據(jù)解包,并根據(jù)其目的ION重新打包后轉(zhuǎn)發(fā)至目的ION處。
ii.直接方式中,各PN將屬于同一ION的數(shù)據(jù)打包后統(tǒng)一發(fā)送至目的ION。
6)無論分組或直接方式,ION結(jié)點(diǎn)都利用雙緩沖區(qū)機(jī)制并發(fā)地接收、解包和調(diào)度數(shù)據(jù),最后一次性寫入磁盤。
圖5說明了本發(fā)明循環(huán)式流水消息發(fā)送機(jī)制。數(shù)據(jù)覆蓋的PN數(shù)超過門坎值時,本發(fā)明采用分組發(fā)送方式減少消息的發(fā)送量,在向各組長發(fā)送數(shù)據(jù)時采用消息輪循發(fā)送方式。圖的左側(cè)為發(fā)送消息的ION編號。每一個方框代表一個消息,方框中的編號為消息的目的PN號。由于CIO操作的同步性特點(diǎn),各個ION幾乎在同一時刻讀取完數(shù)據(jù),并向各個通信組長發(fā)送消息。此時多個ION同時按相同的順序向多個PN發(fā)送數(shù)據(jù)時,接收方很可能產(chǎn)生接收沖突。如圖5(a)所示,當(dāng)多個ION均以PN1為第一個發(fā)送對象,由于PN1一時刻只能接收一個消息(ION1的),所以ION2向PN1發(fā)送數(shù)據(jù)必須延遲等待ION1向PN1發(fā)送數(shù)據(jù)完畢才能開始發(fā)送。而采用圖2(b)即本發(fā)明的循環(huán)式流水消息發(fā)送方式,各個ION消息的發(fā)送分別以不同的PN號開始,如ION1從PN1開始,ION2從PN2開始。此時的消息發(fā)送基本上可以消除沖突現(xiàn)象。所以圖2(b)中ION2向PN2發(fā)送數(shù)據(jù)可以與ION1向PN1發(fā)送數(shù)據(jù)同時進(jìn)行。當(dāng)發(fā)送的消息量較大時,循環(huán)發(fā)送方式可節(jié)省較多時間。
圖6顯示了本發(fā)明CDGIO方法和面向磁盤的并行I/O服務(wù)方法在從一個ION讀取3M數(shù)據(jù)時的帶寬對比。設(shè)數(shù)據(jù)在各PN間呈細(xì)粒度分布,分布尺寸為8字節(jié),MPI通信建立延遲為20us,磁盤峰值帶寬為12MB/s時。由于一塊8K的數(shù)據(jù)塊將產(chǎn)生1024個小消息,故面向磁盤的并行I/O服務(wù)方法由于通信開銷過大,系統(tǒng)I/O性能較差。如圖6所示,橫座標(biāo)表示PN結(jié)點(diǎn)數(shù),縱座標(biāo)表示I/O帶寬,當(dāng)一塊數(shù)據(jù)所覆蓋的PN數(shù)大于一定數(shù)量 個結(jié)點(diǎn)時,磁盤的I/O操作將無法掩蓋通信開銷,面向磁盤的并行I/O服務(wù)方法的性能迅速下降。本發(fā)明在一塊數(shù)據(jù)的消息數(shù)小于門坎值時采用了與面向磁盤的并行I/O服務(wù)方法相同的直接傳輸機(jī)制,故二者的性能相當(dāng)。當(dāng)消息數(shù)大于門坎值 時,本發(fā)明采用分組傳輸方式,減少了一塊數(shù)據(jù)塊所產(chǎn)生的傳輸開銷。ION的磁盤操作可有效地掩蓋通信操作,防止產(chǎn)生通信瓶頸。從圖6可以發(fā)現(xiàn),由于CDGIO采用分組方法減少了消息量,即使PN數(shù)增加,CDGIO算法中磁盤性能可充分發(fā)揮,達(dá)到近10M左右,系統(tǒng)性能基本保持不變。而面向磁盤的并行I/O服務(wù)方法由于通信瓶頸問題,系統(tǒng)的磁盤性能無法充分發(fā)揮,整體I/O性能快速下降。
本發(fā)明面向通信,兼顧磁盤性能和通信帶寬的關(guān)系,針對并行科學(xué)計(jì)算中大尺寸集中訪問和小尺寸分散訪問同時存在的特點(diǎn),提出通信組、主結(jié)點(diǎn)結(jié)構(gòu),采用雙級分組傳輸策略,通過面向通信的分組數(shù)據(jù)傳輸,細(xì)化瓶頸部件,減少消息量,降低通信開銷,使磁盤訪問較好地覆蓋通信操作,從而減少整體I/O執(zhí)行時間,獲得較優(yōu)的I/O服務(wù)性能。經(jīng)過評測,本發(fā)明是一種在當(dāng)前磁盤和高速互聯(lián)網(wǎng)性能條件下較高效的并行I/O服務(wù)方法。
本發(fā)明已實(shí)現(xiàn)于國防科大自行研制的高性能服務(wù)器及Digital UNIX操作系統(tǒng)上。本發(fā)明采用線程機(jī)制,基于Digital UNIX的線程庫設(shè)計(jì)。但本發(fā)明并不局限于任何具體的硬件平臺和操作系統(tǒng),服務(wù)方法可以方便地移植到其它環(huán)境中,如Linux、Free BSD和銀河麒麟(KYLIN)等操作系統(tǒng)中,具有廣泛的通用性。
權(quán)利要求
1.一種面向通信的分組并行輸入/輸出服務(wù)方法,其系統(tǒng)結(jié)構(gòu)中的結(jié)點(diǎn)包括處理結(jié)點(diǎn)PN和I/O結(jié)點(diǎn)ION,其特征在于本發(fā)明在高性能計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)PN結(jié)點(diǎn)和ION結(jié)點(diǎn)的基礎(chǔ)上,增加通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu),基于通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu),通過CIO操作接口的同步作用獲得較大的磁盤訪問帶寬,將讀操作和寫操作分別處理,在讀操作和寫操作時均采用分組打包的消息傳輸方式。
2.如權(quán)利要求1所述的面向通信的分組并行輸入/輸出服務(wù)方法,其特征在于所述通信組是若干PN的集合,設(shè)計(jì)時組內(nèi)PN的通信方式采用具有較高傳輸帶寬和較低傳輸延遲的緊耦合通信方式,通信組間的通信方式則采用較松散的通信方式,組內(nèi)的通信帶寬和延遲優(yōu)于通信組間的帶寬和延遲,且同一通信組內(nèi)的通信不干擾其他通信組內(nèi)部的信息傳輸,通信組數(shù)目為所有處理結(jié)點(diǎn)數(shù)的平方根值,每一通信組有一個通信組組長結(jié)點(diǎn),組長結(jié)點(diǎn)一般選取本通信組中PN號最小的PN結(jié)點(diǎn),也可靈活選擇任意PN結(jié)點(diǎn),通信組組長結(jié)點(diǎn)上運(yùn)行接收線程和解包/轉(zhuǎn)發(fā)線程,負(fù)責(zé)全組與ION間的通信和數(shù)據(jù)的重分布工作;所述主結(jié)點(diǎn)可選取任意PN結(jié)點(diǎn)擔(dān)任,其上運(yùn)行集束式I/O即CIO操作的接口處理線程,該線程負(fù)責(zé)所有參加CIO操作的I/O請求同步,當(dāng)各PN通過CIO操作接口發(fā)出請求時,所有請求先發(fā)送到主結(jié)點(diǎn),當(dāng)參加CIO操作的所有PN的請求到達(dá)后,主結(jié)點(diǎn)把各PN的請求匯集成一個大數(shù)據(jù)包廣播給所有ION,完成所有I/O請求服務(wù)的ION也將向主結(jié)點(diǎn)發(fā)送完畢信號,當(dāng)所有ION的完畢信號到達(dá)后,主結(jié)點(diǎn)向各PN廣播完畢信號,各PN結(jié)束本次CIO操作。
3.如權(quán)利要求1所述的面向通信的分組并行輸入/輸出服務(wù)方法,其特征在于所述讀操作具體過程是3.1各個PN結(jié)點(diǎn)將讀請求發(fā)往主結(jié)點(diǎn);3.2主結(jié)點(diǎn)檢測屬于同一CIO操作組的PN請求是否全部到達(dá),當(dāng)參加CIO操作的所有PN的讀請求到達(dá)主結(jié)點(diǎn)后,主結(jié)點(diǎn)的CIO接口同步線程同步各PN的讀請求后匯集成一個大數(shù)據(jù)包廣播給所有ION;3.3各ION結(jié)點(diǎn)查詢本結(jié)點(diǎn)的元數(shù)據(jù)服務(wù)器,根據(jù)元數(shù)據(jù)服務(wù)器提供的本結(jié)點(diǎn)文件元信息以及數(shù)據(jù)在磁盤上物理分布信息調(diào)度各讀請求,以磁盤數(shù)據(jù)順序分布的序列來訪問磁盤數(shù)據(jù)從而獲得最優(yōu)的訪問性能;3.4各ION結(jié)點(diǎn)基于多線程采用流水處理方式將讀取的數(shù)據(jù)以通信組為單位打包發(fā)往通信組組長,每個ION開辟兩塊數(shù)據(jù)緩沖區(qū)用于流水方式的數(shù)據(jù)發(fā)送,磁盤I/O線程根據(jù)調(diào)度后的請求序列從磁盤讀取數(shù)據(jù)到空閑數(shù)據(jù)緩沖區(qū)中;發(fā)送線程根據(jù)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)覆蓋的PN數(shù)確定是否采用分組方式發(fā)送到PN結(jié)點(diǎn)處,當(dāng)覆蓋數(shù)超過門坎值τ時采用分組方式發(fā)送,不超過門檻值τ,ION則只將屬于同一PN的數(shù)據(jù)打包后直接發(fā)送至該P(yáng)N處,門坎值τ由通信干銷同磁盤開銷比確定tdisk和tnct_bandwidth分別為磁盤讀取一塊緩沖區(qū)的時間和高速互連網(wǎng)絡(luò)的傳輸帶寬,Sblk為文件數(shù)據(jù)塊尺寸,tnet_setup為一個數(shù)據(jù)包的通信建立時間,τ=(Tdisk-sblk/tnet_bandwidth)/tnet_setup由于高速互聯(lián)網(wǎng)的傳輸帶寬較大,故上公式的網(wǎng)絡(luò)傳輸開銷可忽略不計(jì),τ值可由下式近似確定τ≈tdisk/tnet_setup當(dāng)數(shù)據(jù)細(xì)粒度分布時,一塊緩沖區(qū)所覆蓋PN數(shù)往往超過門坎值τ,消息發(fā)送開銷將大于磁盤開銷,磁盤操作無法掩蓋通信,當(dāng)數(shù)據(jù)的PN覆蓋數(shù)超過門坎值τ時,本發(fā)明采用分組發(fā)送方式,各ION將屬于同一通信組的數(shù)據(jù)打成一個消息包發(fā)送給通信組長;當(dāng)數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)覆蓋的PN數(shù)小于該門坎值τ時,磁盤操作可以掩蓋通信操作,本發(fā)明不執(zhí)行分組功能,即每個PN為一組,各ION只將屬于同一PN的數(shù)據(jù)打包發(fā)送;3.4在本發(fā)明分組發(fā)送方式中,通信組長采用多線程流水處理技術(shù)接收和轉(zhuǎn)發(fā)屬于該組其他成員的數(shù)據(jù)通信組長開辟兩塊數(shù)據(jù)緩沖區(qū)分別用于接收數(shù)據(jù)和解包、發(fā)送數(shù)據(jù);接收線程接收到一塊數(shù)據(jù)后,通知解包發(fā)送線程解包;解包發(fā)送線程根據(jù)數(shù)據(jù)頭的目的地信息決定該段數(shù)據(jù)是本地?cái)?shù)據(jù)還是其他PN的數(shù)據(jù),本地?cái)?shù)據(jù)則直接寫入用戶緩沖區(qū),非本地?cái)?shù)據(jù)則發(fā)送至目的結(jié)點(diǎn);目的PN結(jié)點(diǎn)按與通信組長相同的方法接收、解包數(shù)據(jù);3.5在本發(fā)明非分組發(fā)送方式中,ION直接發(fā)送數(shù)據(jù)至各PN結(jié)點(diǎn),各PN結(jié)點(diǎn)采用雙緩沖區(qū)結(jié)構(gòu),通過多線程技術(shù)流水并行接收和解包數(shù)據(jù),此時無轉(zhuǎn)發(fā)過程。
4.如權(quán)利要求1所述的面向通信的分組并行輸入/輸出服務(wù)方法,其特征在于所述寫操作同樣采用分組打包的消息傳輸方式,具體過程是4.1參加CIO操作的各個PN結(jié)點(diǎn)將寫請求發(fā)送到主結(jié)點(diǎn)處同步;4.2當(dāng)所有參加CIO操作的寫請求到達(dá)后,主結(jié)點(diǎn)將各PN的寫請求合并后廣播給所有ION;4.3ION結(jié)點(diǎn)根據(jù)本地元數(shù)據(jù)服務(wù)器提供的文件分布信息,確定哪個PN的數(shù)據(jù)將寫入本ION;4.4ION將上述數(shù)據(jù)元信息廣播給所有的PN結(jié)點(diǎn);4.5當(dāng)參加本次CIO操作的PN數(shù)超過門坎值τ時,本發(fā)明采用分組打包傳輸方式;當(dāng)PN數(shù)小于門坎值τ時,本發(fā)明采取直接發(fā)送的辦法4.5.1分組方式中,各PN將要寫入的數(shù)據(jù)作為一個整體發(fā)送至本組的通信組長處,發(fā)送時,各PN采用雙線程和雙緩沖區(qū)的并行發(fā)送技術(shù)將分布于用戶緩沖區(qū)中的分散數(shù)據(jù)打包后傳輸,通信組長采用多線程流水處理技術(shù)接收和轉(zhuǎn)發(fā)屬于該組其他成員的數(shù)據(jù)通信組長開辟兩塊數(shù)據(jù)緩沖區(qū)分別用于接收數(shù)據(jù)和解包、發(fā)送數(shù)據(jù);接收線程接收到一塊數(shù)據(jù)后,通知解包發(fā)送線程解包;解包發(fā)送線程根據(jù)數(shù)據(jù)頭的目的地信息將數(shù)據(jù)解包,并根據(jù)其目的ION重新打包后轉(zhuǎn)發(fā)至目的ION處;4.5.2直接方式中,各PN將屬于同一ION的數(shù)據(jù)打包后統(tǒng)一發(fā)送至目的ION;4.6無論分組或直接方式,ION結(jié)點(diǎn)都利用雙緩沖區(qū)機(jī)制并發(fā)地接收、解包和調(diào)度數(shù)據(jù),最后一次性寫入磁盤。
5.如權(quán)利要求1或3所述的面向通信的分組并行輸入/輸出服務(wù)方法,其特征在于所述讀操作中在向各通信組長發(fā)送數(shù)據(jù)時采用循環(huán)式流水消息發(fā)送方式,即每個ION分別以自己的序號作為起始的PN發(fā)送號。
全文摘要
本發(fā)明公開了一種面向通信的分組并行輸入/輸出服務(wù)方法,要解決的技術(shù)問題是針對現(xiàn)有I/O服務(wù)方法對分散數(shù)據(jù)訪問性能低、不支持MPMD編程方式、產(chǎn)生的消息量較大等問題,提出一種面向通信的分組并行I/O服務(wù)方法以提供較高的I/O服務(wù)性能。技術(shù)方案是在高性能計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)中增加通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu),基于通信組結(jié)構(gòu)和主結(jié)點(diǎn)結(jié)構(gòu),通過CIO操作接口的同步作用獲得較大的磁盤訪問帶寬,將讀操作和寫操作分別處理,在讀操作和寫操作中均采用分組打包的消息傳輸方式。采用本發(fā)明可減少通信的消息量,掩蓋轉(zhuǎn)發(fā)開銷,實(shí)現(xiàn)通信和磁盤操作的并行化,從而有效解決了通信瓶頸問題,減少了I/O訪問的服務(wù)時間,提高了并行文件系統(tǒng)的整體服務(wù)性能。
文檔編號H04L12/56GK1585380SQ20041002325
公開日2005年2月23日 申請日期2004年5月28日 優(yōu)先權(quán)日2004年5月28日
發(fā)明者盧凱, 遲萬慶, 馮華 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)