顏秉輝,安 虹,梁偉浩,陳俊仕
(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230026)
伴隨著高性能計(jì)算(High Performance Computing,HPC)技術(shù)的發(fā)展,眾多科學(xué)計(jì)算領(lǐng)域的應(yīng)用(如氣候預(yù)測、環(huán)境模擬等)模擬精度逐步提升,計(jì)算過程處理的數(shù)據(jù)量逐漸增多,I/O成為此類應(yīng)用的性能瓶頸[1].例如公共地球系統(tǒng)模式(Community Earth System Model,CESM)在執(zhí)行0.25°水平分辨率的計(jì)算模擬過程中會(huì)產(chǎn)生PB(petabytes)量級的數(shù)據(jù),接近90%的應(yīng)用執(zhí)行時(shí)間耗費(fèi)在I/O行為上[2].這類I/O密集型的科學(xué)大數(shù)據(jù)應(yīng)用(簡稱I/O密集型應(yīng)用)對HPC系統(tǒng)的I/O性能提出更高的要求.
隨著處理器工藝的改進(jìn)和多核與眾核處理器的采用,HPC系統(tǒng)的計(jì)算性能獲得極大提升,但系統(tǒng)的I/O性能增長卻極其緩慢[3].系統(tǒng)計(jì)算性能與I/O性能之間的差距不斷擴(kuò)大,I/O性能成為制約系統(tǒng)計(jì)算性能發(fā)揮的重大阻礙.同時(shí),在現(xiàn)有每秒千萬億次浮點(diǎn)計(jì)算能力的HPC系統(tǒng)上,以計(jì)算為中心的I/O機(jī)制無法高效滿足應(yīng)用擴(kuò)展到大規(guī)模節(jié)點(diǎn)上的性能需求.并且許多傳統(tǒng)科學(xué)計(jì)算應(yīng)用采用的低級I/O管理模式也在限制應(yīng)用的性能提升[4].因此隨著系統(tǒng)計(jì)算能力的增強(qiáng)和體系結(jié)構(gòu)的更新,用戶必須兼顧系統(tǒng)結(jié)構(gòu)資源特性和應(yīng)用程序需求來獲得最佳的I/O性能[5].用戶需要一個(gè)高效、友好,并且便于移植的I/O優(yōu)化方案來滿足這些需求.
本文實(shí)現(xiàn)并優(yōu)化一種基于消息傳遞模型(MPI)的新型執(zhí)行模型——分離執(zhí)行模型.在該執(zhí)行模型的系統(tǒng)框架中引入新的數(shù)據(jù)處理節(jié)點(diǎn),主要負(fù)責(zé)執(zhí)行應(yīng)用中與I/O相關(guān)的數(shù)據(jù)密集型操作,包括與計(jì)算節(jié)點(diǎn)的數(shù)據(jù)交互、對存儲節(jié)點(diǎn)的I/O操作等.在商用平臺和國產(chǎn)高性能系統(tǒng)神威太湖之光上的實(shí)驗(yàn)表明,該模型可以有效減少數(shù)據(jù)在計(jì)算節(jié)點(diǎn)與存儲節(jié)點(diǎn)之間互連網(wǎng)絡(luò)中的傳輸次數(shù),加速計(jì)算進(jìn)程對數(shù)據(jù)的獲取,提升約10%至20%的I/O性能.
基于固態(tài)硬盤和相變存儲器的FLASH存儲技術(shù)等系統(tǒng)硬件層面的研究工作,這些工作致力于加快系統(tǒng)對存儲介質(zhì)的訪問速度,減少訪問延遲[6],加速數(shù)據(jù)獲取,從而減少系統(tǒng)計(jì)算性能與I/O性能之間的差距.但這些工作無法有效減少數(shù)據(jù)在系統(tǒng)內(nèi)部互連網(wǎng)絡(luò)中的傳輸次數(shù),不能從根本上解決系統(tǒng)I/O性能瓶頸問題.
當(dāng)前HPC系統(tǒng)上的并行編程模型如:MPI,Unified Parallel C 和數(shù)據(jù)并行編程模型HPF 等,這些并行編程模型專門為計(jì)算密集型應(yīng)用設(shè)計(jì),實(shí)現(xiàn)進(jìn)程訪存和進(jìn)程間通信機(jī)制的抽象描述,而對I/O操作的管理和優(yōu)化較少.如MPI標(biāo)準(zhǔn)庫采用MPI-I/O接口子集實(shí)現(xiàn)進(jìn)程I/O操作的抽象描述[7].一些高級的I/O接口庫,如HDF和PnetCDF,雖然提供進(jìn)程I/O操作的高層抽象,并將這些抽象作為并行編程模型的一部分,但僅作為編程模型在管理I/O行為方面的補(bǔ)充.這些研究多數(shù)僅實(shí)現(xiàn)基本的I/O管理操作,缺少針對I/O密集型應(yīng)用I/O性能需求的專門設(shè)計(jì),I/O映射和管理能力較弱.
優(yōu)化運(yùn)行時(shí)系統(tǒng)來提升I/O性能的研究工作,其技術(shù)策略是在I/O操作的客戶端或服務(wù)端將小規(guī)模數(shù)據(jù)請求整合為大規(guī)模連續(xù)數(shù)據(jù)請求,以此提升系統(tǒng)的I/O性能[8].并行文件系統(tǒng)技術(shù),致力于實(shí)現(xiàn)多個(gè)客戶端對文件的并發(fā)I/O訪問[9].I/O系統(tǒng)的高速緩存優(yōu)化技術(shù)[10]和數(shù)據(jù)預(yù)取優(yōu)化技術(shù)[11],致力于提升進(jìn)程對數(shù)據(jù)的讀寫速度,降低I/O訪問延遲.但對于I/O密集型應(yīng)用的多個(gè)進(jìn)程突發(fā)性大規(guī)模I/O讀寫請求,這些技術(shù)提升的性能有限.解耦范式[12]提供一種對I/O密集型應(yīng)用的全新優(yōu)化思路,通過在系統(tǒng)框架中引入雙層中間節(jié)點(diǎn)負(fù)責(zé)管理I/O操作,從而減少應(yīng)用在執(zhí)行過程中數(shù)據(jù)遷移的成本.但解耦范式三段式的I/O路徑仍可進(jìn)一步優(yōu)化,同時(shí)雙層中間節(jié)點(diǎn)的引入使節(jié)點(diǎn)管理模式更為復(fù)雜.
在美國阿貢國家實(shí)驗(yàn)室(Argonne National Laboratory)統(tǒng)計(jì)的26個(gè)科學(xué)大數(shù)據(jù)計(jì)算應(yīng)用中,有20個(gè)應(yīng)用在執(zhí)行過程中生成和存儲TB(terabytes)量級的數(shù)據(jù)[13].這些應(yīng)用在執(zhí)行過程中產(chǎn)生大量的I/O請求成為此類應(yīng)用性能的主要瓶頸.此類I/O密集型應(yīng)用在多個(gè)HPC系統(tǒng)平臺上的I/O行為統(tǒng)計(jì)結(jié)果表明,采用原始、低級的I/O接口(如POSIX-IO)去管理應(yīng)用I/O行為將無法充分發(fā)揮HPC系統(tǒng)的計(jì)算性能[4].而許多經(jīng)典的I/O密集型應(yīng)用代碼量大、邏輯復(fù)雜,重構(gòu)困難.因此提供一個(gè)高效、便于應(yīng)用調(diào)用、無需更改應(yīng)用算法邏輯的I/O管理函數(shù)庫是有必要的.
分離執(zhí)行模型改變傳統(tǒng)系統(tǒng)架構(gòu)中計(jì)算節(jié)點(diǎn)與存儲節(jié)點(diǎn)經(jīng)內(nèi)部互連網(wǎng)絡(luò)直接相連的模式,將系統(tǒng)原計(jì)算節(jié)點(diǎn)劃分為計(jì)算節(jié)點(diǎn)和數(shù)據(jù)處理節(jié)點(diǎn)兩部分,計(jì)算節(jié)點(diǎn)通過數(shù)據(jù)處理節(jié)點(diǎn)與存儲節(jié)點(diǎn)相連(見圖1).在該模型中,計(jì)算節(jié)點(diǎn)可以迅速利用進(jìn)程通訊從數(shù)據(jù)處理節(jié)點(diǎn)獲得計(jì)算所需數(shù)據(jù),無需經(jīng)過慢速的互連網(wǎng)絡(luò)從存儲節(jié)點(diǎn)讀取數(shù)據(jù),減少計(jì)算節(jié)點(diǎn)的數(shù)據(jù)等待時(shí)間.同時(shí)經(jīng)過數(shù)據(jù)處理節(jié)點(diǎn)的數(shù)據(jù)可以由數(shù)據(jù)處理節(jié)點(diǎn)在本地進(jìn)行歸約和緩存,減少系統(tǒng)內(nèi)部互連網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量和傳輸次數(shù).

圖1 分離執(zhí)行模型系統(tǒng)架構(gòu)Fig.1 System architecture of the decoupled execution model
傳統(tǒng)的程序執(zhí)行流程為“數(shù)據(jù)提取-模擬計(jì)算-數(shù)據(jù)存儲”.本文將流程中“模擬計(jì)算”階段包含的操作劃分為計(jì)算密集型操作和與I/O相關(guān)的數(shù)據(jù)密集型操作兩大類,并在流程中加入“數(shù)據(jù)規(guī)約”階段,用以執(zhí)行劃分出的I/O密集型操作.以此形成“數(shù)據(jù)提取-數(shù)據(jù)歸約-模擬計(jì)算-數(shù)據(jù)歸約-數(shù)據(jù)存儲”這種新型的程序執(zhí)行模型——分離執(zhí)行模型(見圖2).模型在數(shù)據(jù)規(guī)約階段可以利用數(shù)據(jù)處理節(jié)點(diǎn)的本地存儲有效減少數(shù)據(jù)在內(nèi)部互連網(wǎng)絡(luò)中的傳輸次數(shù),并在系統(tǒng)架構(gòu)上增加互連網(wǎng)絡(luò)帶寬,加快數(shù)據(jù)的獲取,從而解決I/O密集型應(yīng)用由于大量數(shù)據(jù)在慢速互連網(wǎng)絡(luò)中傳輸造成的I/O性能瓶頸問題.

圖2 執(zhí)行模型的比較Fig.2 Comparison of execution model
在數(shù)據(jù)歸約階段,數(shù)據(jù)處理節(jié)點(diǎn)執(zhí)行分離出的與I/O密切相關(guān)的數(shù)據(jù)密集型操作.數(shù)據(jù)處理節(jié)點(diǎn)主要負(fù)責(zé)接收計(jì)算節(jié)點(diǎn)的I/O讀寫請求,并將I/O請求分析整合,統(tǒng)一完成對文件的讀寫操作.在此執(zhí)行模型下,用戶可以根據(jù)需要將數(shù)據(jù)提取、數(shù)據(jù)歸約、模擬計(jì)算、數(shù)據(jù)存儲、數(shù)據(jù)使用等階段做成軟件流水,使應(yīng)用的I/O、通信和計(jì)算時(shí)間高度重疊,減少應(yīng)用的執(zhí)行時(shí)間.
分離執(zhí)行模型仿照MPI-IO的相關(guān)I/O管理接口,定義新的I/O管理接口,并利用MPI進(jìn)程調(diào)度管理函數(shù)進(jìn)行計(jì)算節(jié)點(diǎn)和數(shù)據(jù)處理節(jié)點(diǎn)的任務(wù)分配與調(diào)度.為便于移植和使用,分離執(zhí)行模型I/O管理接口在參數(shù)設(shè)置上與MPI-IO管理接口保持一致.

圖3 分離執(zhí)行模型實(shí)現(xiàn)Fig.3 Implement of the decoupled execution model
模型將數(shù)據(jù)規(guī)約階段分為3步:I/O請求通訊階段、I/O請求整合階段和I/O操作階段.在執(zhí)行過程中,數(shù)據(jù)處理節(jié)點(diǎn)根據(jù)計(jì)算節(jié)點(diǎn)I/O讀或?qū)懻埱髨?zhí)行相應(yīng)的任務(wù)調(diào)度.
1) 在計(jì)算節(jié)點(diǎn)發(fā)出I/O讀請求后,數(shù)據(jù)處理節(jié)點(diǎn)接收并整合收到的請求,根據(jù)整合后的請求進(jìn)行相應(yīng)的文件讀操作,然后將讀取到的數(shù)據(jù)按照原請求散播到對應(yīng)的計(jì)算節(jié)點(diǎn);
2) 在計(jì)算節(jié)點(diǎn)發(fā)出I/O寫請求后,數(shù)據(jù)處理節(jié)點(diǎn)接收計(jì)算節(jié)點(diǎn)發(fā)送的數(shù)據(jù),然后將數(shù)據(jù)寫入文件.
模型的任務(wù)調(diào)度實(shí)現(xiàn)如圖3所示.
根據(jù)分離執(zhí)行模型數(shù)據(jù)規(guī)約階段3步流程的特點(diǎn),本文對模型進(jìn)行I/O分級讀寫操作優(yōu)化和數(shù)據(jù)處理節(jié)點(diǎn)的文件緩存優(yōu)化,從而加快數(shù)據(jù)處理節(jié)點(diǎn)對I/O請求的響應(yīng)速度,加速數(shù)據(jù)在數(shù)據(jù)處理節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)之間的傳輸,降低計(jì)算節(jié)點(diǎn)的數(shù)據(jù)等待時(shí)間.
3.4.1 分級讀寫優(yōu)化
兩階段I/O(two-phase I/O)方案[14]是廣泛用于提升I/O性能的經(jīng)典優(yōu)化方法.通過合并多個(gè)進(jìn)程的非連續(xù)I/O請求,組成更長的連續(xù)I/O請求,從而減少I/O系統(tǒng)頻繁響應(yīng)I/O請求的等待開銷和獲取非連續(xù)數(shù)據(jù)的額外開銷.在傳統(tǒng)的兩階段I/O方案中,選取進(jìn)程的一部分子集作為聚合器(aggregator),負(fù)責(zé)接收和整合其他進(jìn)程的I/O請求.在第1階段,所有進(jìn)程通過調(diào)用MPI_Alltoall和MPI_Alltoallv函數(shù)交換I/O請求信息;在第2階段,聚合器發(fā)起I/O讀或?qū)懖僮鳎@得的數(shù)據(jù)發(fā)送給對應(yīng)進(jìn)程或?qū)懭胛募?相關(guān)的研究證明,在兩階段I/O方案中,第1階段I/O請求的信息交換與整合為I/O行為的耗時(shí)熱點(diǎn).而第2階段的I/O讀寫操作耗時(shí)受到系統(tǒng)硬件結(jié)構(gòu)和網(wǎng)絡(luò)結(jié)構(gòu)的影響[15].
本文根據(jù)數(shù)據(jù)規(guī)約階段I/O行為特點(diǎn),基于兩階段I/O方案,設(shè)計(jì)新的分級讀寫策略——三階段分級讀寫策略.數(shù)據(jù)處理節(jié)點(diǎn)作為聚合器,采用靜態(tài)映射的方式,負(fù)責(zé)響應(yīng)對應(yīng)計(jì)算節(jié)點(diǎn)進(jìn)程的I/O操作請求.策略流程分為3階段(見圖4),第1階段,數(shù)據(jù)處理節(jié)點(diǎn)接收其所負(fù)責(zé)計(jì)算節(jié)點(diǎn)的I/O讀或?qū)懻埱螅坏?階段,數(shù)據(jù)處理節(jié)點(diǎn)將接收到的I/O請求整合,將多次小規(guī)模I/O請求整合成單次大規(guī)模I/O請求;第3階段,數(shù)據(jù)處理節(jié)點(diǎn)根據(jù)整合后的I/O讀或?qū)懖僮鲗?shù)據(jù)散播給數(shù)據(jù)節(jié)點(diǎn)或?qū)懭胛募?

圖4 三階段分級讀寫策略流程Fig.4 Process of the three-phase hierarchical read and write strategy
3.4.2 文件緩存優(yōu)化
在分離執(zhí)行模型的系統(tǒng)架構(gòu)中,數(shù)據(jù)處理節(jié)點(diǎn)是數(shù)據(jù)的核心中轉(zhuǎn)樞紐.為數(shù)據(jù)處理節(jié)點(diǎn)設(shè)計(jì)高效的文件緩存策略可以有效減少數(shù)據(jù)在計(jì)算節(jié)點(diǎn)與存儲節(jié)點(diǎn)之間慢速互連網(wǎng)絡(luò)上的傳輸次數(shù)[16].本文根據(jù)數(shù)據(jù)處理節(jié)點(diǎn)任務(wù)類別和I/O行為特點(diǎn),為數(shù)據(jù)處理節(jié)點(diǎn)處理I/O讀、寫請求分別設(shè)計(jì)了不同的文件緩存策略.
在響應(yīng)I/O讀請求時(shí),各數(shù)據(jù)處理節(jié)點(diǎn)在本地維護(hù)目標(biāo)讀取文件的完整拷貝作為讀緩存.多節(jié)點(diǎn)的讀緩存不會(huì)產(chǎn)生數(shù)據(jù)一致性問題,無需通過節(jié)點(diǎn)通訊進(jìn)行緩存維護(hù),因此沒有額外的通訊開銷.當(dāng)數(shù)據(jù)處理節(jié)點(diǎn)收到計(jì)算節(jié)點(diǎn)的I/O讀取請求后,從本地讀緩存獲取數(shù)據(jù),然后將數(shù)據(jù)散播到對應(yīng)的計(jì)算節(jié)點(diǎn).
在響應(yīng)I/O寫請求時(shí),各數(shù)據(jù)處理節(jié)點(diǎn)分別在本地按照進(jìn)程序號順序維護(hù)目標(biāo)寫入文件的部分?jǐn)?shù)據(jù).因此多節(jié)點(diǎn)的寫緩存不存在數(shù)據(jù)交叉,不會(huì)產(chǎn)生數(shù)據(jù)一致性問題.當(dāng)數(shù)據(jù)處理節(jié)點(diǎn)收到其所負(fù)責(zé)的計(jì)算節(jié)點(diǎn)的寫入數(shù)據(jù)后,將寫入數(shù)據(jù)維護(hù)到本地的寫緩存,并在收到數(shù)據(jù)同步請求后將寫緩存數(shù)據(jù)統(tǒng)一寫入到文件.
經(jīng)上述對分離執(zhí)行模型的I/O分級讀寫操作優(yōu)化和數(shù)據(jù)處理節(jié)點(diǎn)的文件緩存優(yōu)化,數(shù)據(jù)處理節(jié)點(diǎn)的進(jìn)程管理及I/O請求響應(yīng)算法流程如下:
算法
while(!STOP_FLAG){
MPI_Probe();
switch(probe_status.MPI_TAG){
case READ_REQUEST_TAG:
MPI_Gather();// 獲得讀請求
Coalesce_read_request();// 整合讀請求
Read_from_file_cache();// 從本地文件緩存讀取
MPI_Scatter();// 將數(shù)據(jù)散播到計(jì)算節(jié)點(diǎn)
break;
case WRITE_REQUEST_TAG:
MPI_Gather();// 獲得寫請求的數(shù)據(jù)
Write_into_file_cache();// 將數(shù)據(jù)寫入本地文件緩存
break;
Case SYNC_TAG;
MPI_Recv();// 獲得同步請求
MPI_File_write();// 將本地寫緩存寫入到硬盤文件
break;
}
}
性能測試程序?yàn)榻?jīng)典的HPC系統(tǒng)I/O性能基準(zhǔn)測試程序IOR.IOR基準(zhǔn)測試程序包含多種編程模型的I/O管理接口,提供了多種配置I/O請求的參數(shù)選項(xiàng).本文在IOR基準(zhǔn)測試程序中嵌入分離執(zhí)行模型的I/O管理接口,進(jìn)行分離執(zhí)行模型I/O接口的性能評測.實(shí)驗(yàn)通過多種配置選項(xiàng)去模擬I/O密集型應(yīng)用多個(gè)進(jìn)程進(jìn)行文件I/O讀寫訪問的請求.
實(shí)驗(yàn)平臺選取曙光集群平臺和國產(chǎn)HPC系統(tǒng)神威太湖之光.曙光平臺為8節(jié)點(diǎn)集群,每個(gè)節(jié)點(diǎn)配備1個(gè)Intel(R) Xeon(R) CPU E5-2660處理器,內(nèi)存126GB.系統(tǒng)采用容量為200GB的GPFS并行文件系統(tǒng),節(jié)點(diǎn)之間通過4路QDR Infiniband網(wǎng)絡(luò)相連,理論網(wǎng)絡(luò)傳輸帶寬為40Gb/s.神威太湖之光合計(jì)共有40960個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)配備1個(gè)SW26010處理器,每個(gè)SW26010處理器包含4組計(jì)算核心,每個(gè)計(jì)算核心內(nèi)存8G.系統(tǒng)采用GPFS并行文件系統(tǒng),32個(gè)計(jì)算節(jié)點(diǎn)構(gòu)成超節(jié)點(diǎn),超節(jié)點(diǎn)與存儲節(jié)點(diǎn)通過4路FDR Infiniband網(wǎng)絡(luò)相連,理論網(wǎng)絡(luò)傳輸帶寬為56Gb/s,超節(jié)點(diǎn)內(nèi)部節(jié)點(diǎn)通過PCIe3.O x8系統(tǒng)接口相連,理論傳輸帶寬16GB/s.
實(shí)驗(yàn)記錄在不同執(zhí)行模型下,運(yùn)行IOR基準(zhǔn)測試程序進(jìn)行文件I/O讀寫操作所能達(dá)到的有效數(shù)據(jù)傳輸帶寬,并以此作為執(zhí)行模型的I/O性能的評判標(biāo)準(zhǔn).有效數(shù)據(jù)傳輸帶寬為實(shí)際傳輸數(shù)據(jù)量與時(shí)間的比值.
實(shí)驗(yàn)測試數(shù)據(jù)采用6GB、12GB、18GB、24GB的文本數(shù)據(jù)文件,在IOR基準(zhǔn)測試程序中分別調(diào)用傳統(tǒng)執(zhí)行模型的MPI-I/O接口和分離執(zhí)行模型的I/O接口進(jìn)行多節(jié)點(diǎn)進(jìn)程的文件I/O讀寫請求對比實(shí)驗(yàn).
第一組對比試驗(yàn)設(shè)置在曙光平臺上,節(jié)點(diǎn)配置分別為傳統(tǒng)執(zhí)行模型下6個(gè)計(jì)算節(jié)點(diǎn),分離執(zhí)行模型下6個(gè)計(jì)算節(jié)點(diǎn)搭配1、2個(gè)數(shù)據(jù)處理節(jié)點(diǎn).在實(shí)驗(yàn)中,I/O請求以16MB為單次傳輸數(shù)據(jù)量進(jìn)行文件I/O讀寫測試.圖5記錄在曙光平臺上利用不同模型進(jìn)行I/O讀操作和I/O寫操作的實(shí)驗(yàn)對比結(jié)果.

圖5 曙光平臺下優(yōu)化前后帶寬結(jié)果對比Fig.5 Bandwidth comparison on sugon cluster
上述在曙光平臺的實(shí)驗(yàn)結(jié)果表明:
1) 在相同配置下,分離執(zhí)行模型較傳統(tǒng)執(zhí)行模型可以獲得10%至20%的I/O讀寫性能提升.
2) 在相同配置下,適當(dāng)提高數(shù)據(jù)處理節(jié)點(diǎn)比例,可以提高分離執(zhí)行模型的I/O性能.但隨著數(shù)據(jù)節(jié)點(diǎn)數(shù)目的比例增加,數(shù)據(jù)處理節(jié)點(diǎn)之間的通訊開銷會(huì)相應(yīng)增加,使得整體的性能提升為非線性加速提升.
3) 分離執(zhí)行模型對于I/O讀請求的優(yōu)化效果好于I/O寫請求.因?yàn)榉蛛x執(zhí)行模式中數(shù)據(jù)處理節(jié)點(diǎn)對本地讀、寫緩存的維護(hù)方案不同,數(shù)據(jù)處理節(jié)點(diǎn)無需根據(jù)計(jì)算節(jié)點(diǎn)的I/O讀請求更新本地的讀緩存.而對于計(jì)算節(jié)點(diǎn)的I/O寫請求,數(shù)據(jù)處理節(jié)點(diǎn)獲取計(jì)算節(jié)點(diǎn)傳送的數(shù)據(jù)后,需更新本地寫緩存,在響應(yīng)頻繁的I/O寫請求時(shí),其更新時(shí)間無法被其他過程隱藏.
第二組對比試驗(yàn)設(shè)置在國產(chǎn)HPC平臺神威太湖之光上,節(jié)點(diǎn)配置分別為傳統(tǒng)執(zhí)行模型下12個(gè)計(jì)算節(jié)點(diǎn)和分離執(zhí)行模型下12個(gè)計(jì)算節(jié)點(diǎn)搭配4、8個(gè)數(shù)據(jù)處理節(jié)點(diǎn).在實(shí)驗(yàn)中,I/O請求以16MB為單次傳輸數(shù)據(jù)量進(jìn)行文件I/O讀寫測試.圖6記錄在神威太湖之光上利用不同模型進(jìn)行I/O讀操作和I/O寫操作的實(shí)驗(yàn)對比結(jié)果.

圖6 神威太湖之光平臺下優(yōu)化前后帶寬結(jié)果對比Fig.6 Bandwidth comparison on sunway TaihuLight
上述結(jié)果表明,在國產(chǎn)HPC系統(tǒng)神威太湖之光上,分離執(zhí)行模型同樣能夠獲得接近10%的I/O讀寫性能提升.相較于商用平臺,分離執(zhí)行模型在神威平臺的性能提升有限.究其原因,神威系統(tǒng)架構(gòu)下節(jié)點(diǎn)非統(tǒng)一內(nèi)存訪問的體系結(jié)構(gòu)特點(diǎn),導(dǎo)致節(jié)點(diǎn)內(nèi)處理器進(jìn)程通訊與節(jié)點(diǎn)間處理器進(jìn)程通訊代價(jià)不一致.同時(shí)由于神威計(jì)算節(jié)點(diǎn)內(nèi)單核心內(nèi)存容量僅有8G,故當(dāng)前的緩存方案在大文件情況下存在性能損耗.
基于目前的實(shí)驗(yàn)測試,通過對比商用平臺與神威平臺的實(shí)驗(yàn)結(jié)果,本文相信通過在系統(tǒng)架構(gòu)中引入一層數(shù)據(jù)處理節(jié)點(diǎn)作為I/O傳輸數(shù)據(jù)的中轉(zhuǎn),并對數(shù)據(jù)處理節(jié)點(diǎn)進(jìn)行多方面的優(yōu)化,可以為解決當(dāng)前HPC系統(tǒng)上I/O密集型應(yīng)用的I/O性能瓶頸問題提供新的解決方案.
本論文面向I/O密集型科學(xué)大數(shù)據(jù)應(yīng)用,實(shí)現(xiàn)并優(yōu)化了一種基于消息傳遞模型的新的執(zhí)行模型——分離執(zhí)行模型.通過實(shí)驗(yàn)證明對I/O密集型應(yīng)用的I/O性能有10%至20%的性能提升.本模型將應(yīng)用的I/O操作和計(jì)算操作放在同等重要的位置,為解決HPC系統(tǒng)上I/O密集型應(yīng)用的I/O性能問題提供了一種新的解決思路.與此同時(shí),模型以數(shù)據(jù)為中心的設(shè)計(jì)思想,對我國下一代國產(chǎn)HPC計(jì)算機(jī)的體系架構(gòu)設(shè)計(jì)和運(yùn)行時(shí)系統(tǒng)研發(fā)具有重要的參考意義.未來,我們將在神威太湖之光平臺上對模型進(jìn)行強(qiáng)擴(kuò)展性的優(yōu)化與測試,同時(shí)對數(shù)據(jù)處理節(jié)點(diǎn)的文件緩存方案進(jìn)行進(jìn)一步優(yōu)化.