摘要:在高性能計算環境中,MPI應用多個計算節點同時訪問底層存儲系統文件時,其I/O開銷受到訪問模式和外存設備性能的影響。針對MPI應用訪問文件的特征,利用非易失內存高帶寬、低時延、可字節尋址、數據可持久化等優勢,提出面向非易失內存的MPI-IO接口優化方案;對文件數據建立分布式的緩存并維護持久性的元數據、對進程間數據傳輸策略進行優化,使應用可以有效管理、利用非易失內存設備,保持緩存數據一致有效。
為了實現 對非易失內存的管理與利用、對文件數據緩存的管理與訪問,本文設計并實現了面向非易失內存的MPI-IO接口優化(NVMPI-IO)。本文的工作主要包括:
● 修改MPI-IO接口,截取應用對底層共享文件系統的訪問,并將其轉化為對計算節點內或計算節點之間的非易失緩存的訪問;
● 在非易失內存中建立并維護緩存數據,使計算節點之間的緩存一致且有效,使應用失效重啟后可以快速地從非易失內存中恢復有效數據;
● 通過多種優化,降低維護、訪問緩存的開銷;
● 最后給出一個原型系統,并對其進行實驗,實驗表明,此系統可以有效地管理、應用非易失內存,并使MPI應用獲得性能提升。
使用NVMPI-IO,MPI應用無須進行修改,即可通過MPI-IO中間件將非易失內存作為數據緩存,實現對文件緩存的分布式訪問,從而減少I/O開銷,并減輕共享文件系統的負載;同時,在非易失內存中維護元數據,使程序在崩潰重啟后可以快速恢復數據,并繼續運行。
MPI應用的文件訪問模式
MPI是基于消息傳遞的并行編程模型,可使多個節點中的多個進程合作完成同一個計算任務,達到并行加速的目的。
MPI被廣泛地應用在科學研究與工程仿真中,常見的MPI實現包括Intel MPI、OpenMPI、MPICH等。使用MPI的應用在訪問文件時顯示出以下訪問特征。
● 多個進程同時訪問同一文件的不同部分。研究物理模型或工程結構的MPI應用在進行計算前,首先需要準備模型文件,多個進程將同時利用模型文件上的數據進行計算,如每個進程讀取多維矩陣的不同部分;進程間按需通信,并將計算結果寫回文件的相應位置。
● MPI-IO使用聚合I/O與數據篩選技術,將多個進程需要的大量小粒度數據聚合成少量的大粒度數據,避免了小粒度的文件數據訪問。
● MPI標準不對文件數據進行緩存。MPI應用在訪問文件時可能對同一文件進行多次讀寫,且每次讀寫的位置可能不一致;同時,多個進程對文件的并行訪問容易使節點內緩存失效;內存的空間有限,而工程模型的數據量可根據工程的精度呈指數型增大,將大量的文件數據緩存到內存可能影響計算效率;在允許直接輸入輸出(direct I/O)的文件系統(如XFS、Lustre)中,MPI建議使用直接輸入輸出,以避免操作系統的緩存。
● MPI應用應周期性地寫出檢查點(checkpoint)文件。大型工程仿真項目可能需要多個節點同時長時間運行,若其中某個節點出現故障導致作業失敗,仿真項目需要重新進行;為了避免過多的重復工作,MPI應用應周期性地輸出檢查點文件,若作業失敗,則從最近的有效檢查點開始繼續計算。同時,檢查點文件可用于仿真的可視化輸出。寫檢查點文件時,進程需要暫停計算任務,或將文件數據復制一份,以避免數據不一致。
● MPI應用多進程對文件進行訪問有顯著的同步特性。數據庫、文件系統等會在任何時間點接收來自多個客戶端的數據請求,若有分布式的緩存,則需要隨時保證數據的一致性;MPI應用的多個進程在訪問同一文件時,多個進程同時訪問數據,當這一階段完成后,進程之間需同步進度后再進行下一階段的訪問。MPI應用多進程的同步避免了寫后讀等數據不一致的問題,可用于簡化緩存的設計。
基于上 述的MPI應用的 數 據 訪問特征,在計算節點上部署非易失緩存有利于MPI應用的性能提升。利用非易失內存容量大、帶寬高、可按字節尋址等特點,在非易失內存上部署緩存層不占用高效的DRAM空間,并將緩慢的文件訪問轉變為高速的非易失內存訪問,可提高MPI應用的性能,同時可減少底層文件系統的負載。
面向非易失內存的MPI-IO接口優化被應用在HPC系統中,其修改MPI-IO模塊接口以管理非易失內存的空間及訪問形式。NVMPI-IO在MPI運行時初始化,并向操作系統申請NVM空間,當作業結束后釋放NVM資源,使NVM資源可供其他應用使用。NVMPI-IO采用簡單而有效的方法獲得了以下優點。
● NVM設備的非獨占使用:NVMPI-IO在運行時,只按需占用NVM的部分空間,其他應用仍可以使用該設備進行其他作業。作業 結 束后,NVMPI-IO立即釋放NVM資源,使其可以被更高效地利用。
● 數據一致性:NVMPI-IO隨MPI程序的運行而運行,每個MPI進程維護文件的部分緩存數據及相應的元數據;通過維護元數據保證緩存數據的一致性。
● 后臺寫回:MPI應用周期性地寫出checkpoint文件,引起大量的數據寫回。NVMPI-IO允許數據的后臺寫回,可在寫回過程同時進行計算任務。
● MPI應用的快速重啟:若MPI應用中某個進程失效引起整個程序的崩潰,在NVM設備上仍然存在有效的數據;使用NVMPI-IO,MPI應用重啟后,可以在NVM中快速恢復數據,實現快速的重啟。
● 高可移植性:MPI可以在不同計算機架構、操作系統上正常工作;NVMPI-IO繼承了MPI的高可移植性。同時,NVMPI-IO不修改提供給上層應用的應用程序接口(application programming interface,API),現有的MPI應用不需要做任何修改即可在此系統上運行。
NVMPI-IO部署在HPC系統中,需對HPC系統的軟硬件做相應的調整。
NVMPI-IO在傳統HPC集群組織中引入NVM設備。在傳統HPC集群中,計算節點通過網絡與共享的存儲系統相連,計算節點從存儲系統中獲得數據,并對數據進行加工處理;同時,計算節點之間通 過TCP/IP網絡或RDMA技術進行通信。如圖所示,NVMPI-IO在每個計算節點中部署NVM設備,同時保持共享存儲系統的設計不變;節點間通信沿用傳統HPC系統中的網絡傳輸,若配備了RDMA網絡,則可以使用RDMA直接訪問其他節點的非易失內存。
NVMPI-IO為MPI應用服務,同時也利用了MPI定義的通信過程。一個典型的HPC應用包含多個MPI進程,其中每個進程使用MPI定義的接口與其他進程進行消息傳遞,使用MPI-IO模塊對底層存儲系統進行數據訪問。本系統保留MPI-IO的聚合I/O與數據篩選優化,這些優化將上層應用需要的小粒度I/O整合成大粒度的I/O,避免了數據的小粒度隨機訪問。如圖所 示,本系統部署在MPI-IO中間件中,截取MPI-IO對文件的系統調用,并 按 需 轉發為非易失內存的數據維護、訪問。
NVMPI-IO在部署時,首先需要在NVM設備上掛載可以直接訪問(direct access,DAX)的文件系統。在NVM設備上掛載DAX文件系統可使應用直接通過指針 訪問NVM上的數據。具體地,進程使用內存映射(memory map)技術將文件系統中的文件映射到應用的進程空間中,進程可以通 過 指針直接 修改NVM,而不是修改操作系統的內核緩存(kernel cache)。
此外,NVMPI-IO使用MPI定義的消息傳遞API與其他節點進行通信,使用POSIX API與底層文件系統進行數據的維護和訪問。
-
接口
+關注
關注
33文章
8526瀏覽量
150861 -
內存
+關注
關注
8文章
3004瀏覽量
73900 -
數據緩存
+關注
關注
0文章
23瀏覽量
7051
原文標題:面向非易失內存的MPI-IO接口優化
文章出處:【微信號:AI_Architect,微信公眾號:智能計算芯世界】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論