專利名稱:用于提供高性能可縮放文件i/o的系統(tǒng)和方法
技術領域:
本發(fā)明涉及訪問例如多計算機環(huán)境中的磁盤的輸入/輸出(I/O)設備
的領域。其特別涉及改進計算機實現(xiàn)的i/o操作,其中,計算機代表計算
節(jié)點的集群。
背景技術:
大量需求被運行在現(xiàn)在最強大的計算系統(tǒng)上的數(shù)據(jù)密集型科學/商業(yè)
應用施加到高性能輸入/輸出(I/O)系統(tǒng)上。盡管多數(shù)計算密集型挑戰(zhàn)由 新興的具有數(shù)千處理器的大規(guī)模并行系統(tǒng)(例如IBM的Blue Gene/L)處 理,但是由于計算與1/0速度之間的差距,關于科學和非科學應用的數(shù)據(jù) 密集型計算仍然繼續(xù)成為感興趣的主要方面。用于大規(guī)模并行程序的存儲 器以及文件系統(tǒng)之間的數(shù)據(jù)的無縫傳輸對于高性能計算環(huán)境中的有用性能 至關重要。
并行超級計算機中的可縮放并行I/O支持主要包括高性能文件系統(tǒng)和 有效并行I/O應用編程接口 (API)。在開發(fā)用于超級計算機的并行文件 系統(tǒng)中已付出了許多努力,例如用于IBM SP系統(tǒng)和Linux集群的GPFS (通用并行文件系統(tǒng))參見F. B. Schmuck和R. L. Haskin的GPFS: a shared-disk file system for large computing clusters, proceedings of Conference of Files and Storages Technologies ( FAST,02 ) , 2002年, 以及用于基于Linux平臺的PVFS參見"PVFS2 Parallel Virtual File System"和Lustre參見"Lustre scalable storage" , Cluster File Systems, 2006版權所有。在應用編程接口方面,MPI (消息傳遞接口 ) I/O由于 其廣泛使用及其在MPI中的基礎而與用于科學計算的并行文件I/O同義。
MPI I/O支持用于并發(fā)訪問單一文件的較豐富的文件訪問模式和操作,這 使得能夠集成積極優(yōu)化。然而,為探索數(shù)據(jù)密集型應用的1/0性能,在各 種層次需要并行I/0支持,所述層次例如是計算系統(tǒng)、文件系統(tǒng)和并行 1/0應用編程接口 (API) 。 GPFS針對具有規(guī)則訪問模式(相鄰的或規(guī)則 條帶化的)的大塊i/o操作被高度優(yōu)化。另一方面,其對于具有不規(guī)則訪 問模式(非恒定條帶化的)的小塊、非相鄰1/0操作的性能是較少優(yōu)化的。 特別地,對同一GPFS條帶塊中的不同文件區(qū)域的并發(fā)訪問(來自不同進 程)引入關聯(lián)于其文件加鎖機制的附加文件系統(tǒng)活動,其可以損害性能。
過去,對于科學應用,計算的程度遠超過文件i/o操作。然而,許多
現(xiàn)在的大規(guī)??茖W操作要求實時的數(shù)據(jù)輸入和輸出(I/O),由此增加了對 提供大規(guī)4莫計算和同時或以規(guī)則或不規(guī)則間隔的文件I/O的需求。所述對 于大規(guī)沖莫計算的需求導致對使大塊和小塊文件都以身見則和不規(guī)則間隔被訪 問的需求。
計算機處理器(計算節(jié)點)中的文件I/O進程開始于通過文件掃描操 作(fseek)與庫(通常為libc)通信的應用的啟動。所述庫啟動計算節(jié)點 中的任意讀操作。對于現(xiàn)代的基于網(wǎng)絡的文件系統(tǒng)(NFS),計算節(jié)點內 核通常由輸入/輸出(I/O)守護進程(daemon)協(xié)助來與外部世界交談。 與外部世界(包括其它計算節(jié)點、文件系統(tǒng)或磁盤)的任何通信都通過計 算機網(wǎng)絡(稱為通信樹、以太網(wǎng))借助于發(fā)送數(shù)據(jù)作為通信分組來實現(xiàn)。 所述分組通常包含被發(fā)送到文件服務器(或磁盤)進行存儲或用于任意文 件I/O進行進一步處理或將來使用的輸出結果。
參考圖1,其示出了用于簡單單一節(jié)點計算機系統(tǒng)100的基本文件I/O 機制的示例。中央處理單元(CPU) 101執(zhí)行讀功能,所述讀功能由操作 內核重新發(fā)出。所述操作是對M盤104向存儲器103區(qū)域傳輸數(shù)據(jù)的請 求。CPU直接地或間接地(例如通過DMA)控制所述磁盤和存儲器執(zhí)行 所述數(shù)據(jù)傳輸。對于一般情況,所述數(shù)據(jù)傳輸不涉及高速緩沖存儲器102。
參考圖2,其示出了關聯(lián)于文件I/O機制200的硬件和軟件堆棧的筒 單示例。單一節(jié)點計算機系統(tǒng)100包含操作系統(tǒng)(OS) 201和用于通過以
太網(wǎng)202訪問文件服務器203的接口 。
然而在并行超級計算機的情況下,多計算核心、多文件i/o守護進程 和文件服務器的出現(xiàn)使得文件I/O磁盤或文件服務器的調度、指派和分配 非常復雜。取決于任意需求(或者大規(guī)模計算、文件I/O),為最小化或 最大化應用所啟動的操作,計算節(jié)點、所關聯(lián)的文件I/O守護進程和文件 服務器的數(shù)量被改變。近年來并行超級計算機所遵循的用于處理之后伴隨 大規(guī)模計算的大塊文件I/O的一種通用過程是通過將計算和I/O操作分離, 并且借助于單獨的計算和I/O密集型處理器來實現(xiàn)。通過為計算和I/O操
作指派單獨的處理器,不僅更易于并行化所述計算和i/o操作,而且有效
地優(yōu)化和最小化數(shù)據(jù)分布的數(shù)量,由此最小化不同計算機處理器和文件服 務器之間的任意數(shù)據(jù)流量和操作。
參考圖3,其示出了典型計算節(jié)點(CN) 301 (也稱為專用于計算的 單一節(jié)點計算機系統(tǒng)100 )和I/O節(jié)點302 (專用于以及運行I/O守護進程
的計算機處理器)。用于實現(xiàn)典型并行超級計算機中的文件i/o的文件服
務器203也被示出。計算節(jié)點內核201與計算網(wǎng)絡303和內部I/0網(wǎng)絡304 交互。所述示出了具有至少一個節(jié)點作用為計算節(jié)點301和另一個節(jié)點作 用為I/O節(jié)點302的計算機系統(tǒng)的計算和I/O功能性的分離。所述專用I/O 節(jié)點302包含其自己的支持普通文件I/O操作的內核305。
參考圖4,其示出了針對利用現(xiàn)有技術水平的高性能文件I/0優(yōu)化的 計算系統(tǒng)的示例。所述系統(tǒng)由三個主要部件組成計算節(jié)點301(CN)的 集群、存儲子系統(tǒng)402以及將計算節(jié)點301的集群連接到存儲子系統(tǒng)402 的以太網(wǎng)結構403。在所述系統(tǒng)中,存儲子系統(tǒng)402可以看作用于向計算 節(jié)點301提供數(shù)據(jù)的文件服務器,所述計算節(jié)點301接著可以看作文件客 戶機。存儲子系統(tǒng)402由磁盤104(物理永久存儲)和網(wǎng)絡共享磁盤(NSD ) 404 (共同優(yōu)化對所ii^盤的訪問的計算機集群)組成。所述磁盤經(jīng)由存儲 區(qū)域網(wǎng)絡(SAN)結構405 (設計用于連接計算機存儲設備的一種網(wǎng)絡) 連接到NSD 404。
現(xiàn)在參考圖5,專用計算網(wǎng)絡501被用于計算節(jié)點之間的通信。 一些
計算節(jié)點301被選作I/O聚集器502。在所有所述計算節(jié)點中,僅I/O聚 集器502與后端文件系統(tǒng)通信,所述后端文件系統(tǒng)由NSD(網(wǎng)絡共享磁盤) 服務器404的陣列、存儲區(qū)域網(wǎng)絡(SAN )結構405和實際磁盤104組成。 I/O聚集器502與NSD服務器404之間的互連是以太網(wǎng)403。
在并行I/O應用編程接口方面,最廣泛使用的接口看來是POSIX文件 1/0接口 (例如POSIXwrite()/read()系統(tǒng)調用)。然而,所述接口對于并
行i/o不夠高效。笫一,其僅支持相鄰i/o請求。第二,其不提供任何用
于大規(guī)模并行應用(通常使用消息傳遞進行進程間通信)的并發(fā)進程的裝 置來協(xié)調其i/o請求?,F(xiàn)代并行文件系統(tǒng)通常為對于大型、相鄰塊中的磁 盤數(shù)據(jù)的文件i/o請求遞送高數(shù)據(jù)吞吐量。另一方面,多數(shù)數(shù)據(jù)密集型應
用發(fā)出許多具有小塊、非相鄰模式的文件數(shù)據(jù)請求。存在對用于以對用戶 透明的方式處理所述不同場景的機制或方法的需求。
現(xiàn)有并行文件系統(tǒng)(例如GPFS)在具有大塊I/O操作的連續(xù)的和規(guī) 則條帶化的文件訪問方面表現(xiàn)良好。然而,對于科學應用頻繁遇到的小塊 和不規(guī)則文件訪問模式,現(xiàn)有并行文件系統(tǒng)并不適當處理,其導致嚴重的 性能損失。
因此,存在對于經(jīng)由為大規(guī)模并行文件系統(tǒng)遞送有用性能來滿足所述 需求的解決方案的需求。
發(fā)明內容
簡單地說,根據(jù)本發(fā)明的實施例, 一種用于實現(xiàn)大規(guī)模并行文件I/O 處理的方法包括以下步驟或動作將處理節(jié)點分離為計算節(jié)點和I/O節(jié)點, 其中計算節(jié)點是專用于計算的計算機處理器,以及I/0節(jié)點是限于運行1/0 守護進程的計算機處理器;將所述計算節(jié)點和I/O節(jié)點組織為處理集合, 所述處理集合包括對應于多個計算節(jié)點的一個專用1/0節(jié)點,其中,所 述多個計算節(jié)點均勻地分布在參與的處理集合上;將來自每個處理集合的 計算節(jié)點指派為變成用于將I/O請求發(fā)送到其對應的I/O節(jié)點的I/O聚集 器,其中,所述I/0聚集器均勻地分布在所述處理集合上;使用集中式緩
沖技術分割文件域,其中數(shù)據(jù)在寫入文件之前被聚集到存儲器中;將所述 已分割文件域指派給所述處理集合;在所述計算節(jié)點中接收I/O相關的系 統(tǒng)調用;將所述I/O相關的系統(tǒng)調用發(fā)送到對應的1/0節(jié)點;以及通過駐 留在所述I/O節(jié)點中的系統(tǒng)I/O守護進程處理所述I/O相關的系統(tǒng)調用。
根據(jù)本發(fā)明的實施例,用于實現(xiàn)上面步驟的三層并行文件IZO系統(tǒng)包 括第一層,其包括至少一個處理集合;笫二層,其是網(wǎng)絡共享磁盤的陣 列;以及第三層,其包括存儲區(qū)域網(wǎng)絡結構和/f茲盤。所述I/0節(jié)點與所述 網(wǎng)絡共享磁盤之間的互連是以太網(wǎng),以及所述第二與第三層之間的連接可 以是光纖信道、光纖信道交換機或以太網(wǎng)。骨干并行文件系統(tǒng)優(yōu)選是GPFS 系統(tǒng)。
為描述前述和其它示例性目的、方面和優(yōu)點,我們使用下面對本發(fā)明 的示例性實施例的詳細描述并參考附圖,其中
圖1示出了用于根據(jù)已知技術的筒單單一節(jié)點計算機系統(tǒng)的文件I/O 機制。
圖2提供了關聯(lián)于根據(jù)已知技術的文件I/O機制的硬件和軟件堆棧的 細節(jié)。
圖3說明了才艮據(jù)已知技術的、具有至少一個節(jié)點作用為計算節(jié)點和另 一個節(jié)點作用為I/O節(jié)點的計算機系統(tǒng)的計算和I/O功能性分離的細節(jié)。
圖4擴展了被擴展到根據(jù)已知技術的多模計算機系統(tǒng)的計算和I/O節(jié) 點機制的細節(jié)。
圖5示出了被引入根據(jù)已知技術的并行文件系統(tǒng)中的I/O聚集器; 圖6提供可適用于根據(jù)本發(fā)明的實施例的并行文件系統(tǒng)的I/O聚集器
的替代的設計/方法。
圖7說明了根據(jù)本發(fā)明的實施例的典型并行文件系統(tǒng)中的文件域分割
和對齊的細節(jié)。
圖8示出了才艮據(jù)本發(fā)明的實施例的、具有專用I/O守護進程的文件加
鎖和解鎖機制中涉及的數(shù)據(jù)結構。
圖9是根據(jù)本發(fā)明的實施例的MPII/O進程流機制的流程圖。
圖10是根據(jù)本發(fā)明的實施例的用于分離計算和I/O進程的方法的流程圖。
圖11a是根據(jù)本發(fā)明的實施例阻塞字節(jié)范圍文件加鎖請求所采取的通 路的流程圖。
圖lib是根據(jù)本發(fā)明的實施例的字節(jié)范圍文件解鎖請求所采取的通路 的流程圖。
圖12是根據(jù)本發(fā)明的實施例的、具有專用1/0節(jié)點守護進程的字節(jié)范 圍文件加鎖和解鎖機制的高級過程的流程圖。
盡管本發(fā)明如所要求的那樣可以被修改為替代形式,但其特定實施例 在附圖中經(jīng)由例子示出,并且將在此處詳細描述。然而應當理解,附圖以 及對其的詳細描述不旨在將本發(fā)明限于所公開的特定形式,而相反,本發(fā)
明將覆蓋落在本發(fā)明的范圍內的所有修改、等價體和替代項。
具體實施例方式
我們描述一種支持用于計算進程的主存儲器與磁盤之間的數(shù)據(jù)的無縫 傳輸?shù)拇箢a^莫并行程序的方法。根據(jù)本發(fā)明的實施例的方法支持用于大規(guī) 模并行超級計算機的分層可縮放文件I/O體系結構的設計、集成和實現(xiàn), 其使用(1)位于后端的例如GPFS的并行文件系統(tǒng);以及(2)作為優(yōu) 選應用編程接口的MPII/O的優(yōu)化實現(xiàn),其同時保持核內計算的出眾的可 縮》文性。
本發(fā)明的兩個關鍵方面是1)實現(xiàn)可預測和最終可縮放I/O性能的在 硬件和軟件層的計算和I/O的分離;以及2)用于并行文件I/O解決方案
的集成三層文件系統(tǒng),其中,所述并行文件i/o解決方案用于提供從系統(tǒng)
計算節(jié)點的高效和可縮放磁盤-數(shù)據(jù)訪問。
從實現(xiàn)才艮據(jù)本發(fā)明的實施例的方法得到的好處是1 )可預測和可縮放 的I/0性能;2)從系統(tǒng)計算節(jié)點的高效和可縮放磁盤-數(shù)據(jù)訪問;3) I/O
訪問對齊到并行文件系統(tǒng)的數(shù)據(jù)塊邊界,并且此后提高文件系統(tǒng)的性能; 以及4)對并行I/0原子訪問模式的支持。 計算系統(tǒng)
從計算系統(tǒng)側,優(yōu)選地,平臺提供的i/o帶寬與計算速度相等。因此, 在功能層,需要具有計算與i/o需求的清晰分割和協(xié)作(在硬件和軟件層
次上的),使得系統(tǒng)可以適于來自大型應用族的各種I/0需求。對于pset, 計算節(jié)點對I/O節(jié)點的比率可以在8:1至64:1的范圍內改變,其中計算節(jié) 點的數(shù)量是2的冪。 文件系統(tǒng)
類似地,任何后端文件系統(tǒng)應當在遞送可縮放1/0帶寬的同時允許并 行應用具有從安裝所述文件系統(tǒng)的節(jié)點對相同文件或不同文件的并發(fā)訪 問。I/O系統(tǒng)本來就對于相鄰磁盤訪問比對于非相鄰或不規(guī)則訪問更高效。 特別地,GPFS針對大塊、規(guī)則(相鄰的或規(guī)則條帶化的)的I/0訪問被 高度優(yōu)化。為獲得更多關于GPFS的信息,參考F. B. Schmuck和R. L. Haskin的"GPFS: a shared-disk file system for large computing clusters", proceedings of Conference of Files and Storages Technologies ( FAST'02 ), 2002年。因此,優(yōu)選來自計算節(jié)點的I/0請求是相鄰的。如之前所陳述的, 計算和I/O節(jié)點的pset (處理器集合)組織對于Blue Gene/L I/O性能起關 鍵作用。通過利用集中式緩沖技術,MPI I/O集中式操作提供Blue Gene/L 的pset結構被發(fā)送的機會,并且可以達到優(yōu)化文件訪問模式。使用所述 pset和集中式緩沖方法的特定動機是雙重的。第一,包含多個pset的Blue Gene/L分區(qū)的最佳觀測到的I/O性能通常在所有所述I/O節(jié)點上的負載被 均衡時獲得。第二,對于較大計算節(jié)點對I/O節(jié)點比率的情況(例如LLNL 系統(tǒng)上的64: 1),當8-16個計算節(jié)點而不是所有計算節(jié)點并發(fā)執(zhí)行I/O 時,pset的I/O性能到達其峰值。
GPFS基于例如基于大塊的磁盤條帶化、客戶端高速緩存、預取和延 遲寫的技術達到其高吞吐量。另外,其使用復雜分布式字節(jié)范圍文件加鎖 技術支持文件一致性。GPFS已設法使用對塊級數(shù)據(jù)訪問操作的積極優(yōu)化
來限制文件加鎖操作的性能副作用。
文件i/o應用接口
為高效地服務科學應用中頻繁遇到的I/O請求(具有不規(guī)則模式的小 塊),我們使用MPI I/O來補充基于GPFS的解決方案。MPI I/O是MPI-2 標準中指定的并行I/O接口 。由于其相比于POSIX I/O具有對更豐富的文 件訪問模式和操作的支持,MPI I/O對于基于MPI的并行程序是優(yōu)選的。 特別地,MPI I/O包括一個集中式I/0操作類(實現(xiàn)了用于以協(xié)作方式訪 問公共文件的一組進程),其為MPII/O實現(xiàn)經(jīng)由以透明方式(使得該編 程接口易于使用)聚集和/或均衡1/0負載來優(yōu)化i/o提供更好的靈活性。 對于我們的目標并行系統(tǒng),所述被分割和均衡的計算和I/O節(jié)點的組織是 遞送可縮放I/0性能的關鍵所在。MPI 1/0集中式操作的兩個階段實現(xiàn)提 供結構被發(fā)送的機會,并且可以達到優(yōu)化訪問模式。
MPI I/O集中式操作的所述兩階段實現(xiàn)的進程間數(shù)據(jù)聚集階段的一種 直接實現(xiàn)是使用MPI點到點通信操作。盡管該實現(xiàn)對于分布式或集群式環(huán) 境執(zhí)行良好,但其可以針對多數(shù)并行系統(tǒng)被進一步優(yōu)化,因為所述系統(tǒng)通 常提供MPI集中式操作的高效實現(xiàn)。這里,我們使用MPI一Alltoall來代 替MPI發(fā)送/接收操作,用于I/O聚集器與參與的MPI進程之間的文件數(shù) 據(jù)聚集通信。我們也已調整了參與的MPI進程與利用高性能集中式通信原 語(MPI—Alltoall、 MPI一Bcast等)的方法交換文件訪問模式信息的實現(xiàn) 以用于MPI進程與I/O聚集器之間的數(shù)據(jù)聚集。
在計算節(jié)點上發(fā)出的集中式MPI I/O調用的完整過程在圖9的流程圖 中示出。所述過程開始于步驟卯l中集中式調用的啟動。在步驟902中, 每個進程收集其文件I/0操作的訪問范圍信息。在步驟903中, 一個進程 (進程0)收集來自參與到所述集中式調用中的所有進程的訪問范圍信息
(全局訪問范圍),指定i/o聚集器的列表,以及為所有所述i/o聚集器
計算基于范圍的已聚集文件范圍的分割。170聚集器是發(fā)出I/O操作的計 算進程的集合(pset)。所述I/O聚集器在其間分割文件的I/O責任。在 該步驟中,根據(jù)本發(fā)明的實施例的分割進程被優(yōu)化為使得I/O聚集器的I/O
訪問對齊到并行文件系統(tǒng)的數(shù)據(jù)塊邊界。例外是第一個I/O聚集器的開始 和最后一個I/O聚集器的結束,必須使其對齊到已聚集訪問范圍的開始和
結束。 一種直接實現(xiàn)可以基于集中式訪問的第一和最后一個文件偏移量執(zhí) 行所述分割,從而達到由所述集中式操作定義的文件區(qū)域的均衡分割。通 過使用所述文件域分割,每個計算進程的文件訪問請求可以是相鄰的。在
使用GPFS作為骨干文件系統(tǒng)的情況下,默認文件分割方法的主要問題是, 其可以引入大小和偏移量不對齊到GPFS塊邊界的數(shù)據(jù)訪問請求,所述將 觸發(fā)另外的文件加鎖相關的活動。根據(jù)本發(fā)明的實施例的文件分割方法集 中式地計算I/O聚集器之間的文件分割,使得每個I/O聚集器的文件域在 大小和偏移量上都對齊到GPFS塊邊界。所述增強的有效性已在實驗中證 明。
在步驟904中,進程0收集全局訪問信息,并且向所有其它進程廣播 分割范圍信息。步驟卯5根據(jù)每個I/O聚集器的已分割范圍文件域構成相 鄰1/0操作的文件域列表的生成。在步驟906中,相鄰文件訪問請求的全 部到全部(all-to-all)交換在所有進程和I/0聚集器間建立。
在步驟907中,所有I/0聚集器聚集來自所有進程的I/0請求,并且 然后計算用于安排I/O和進程間數(shù)據(jù)交換的進度表。所述安排是因為每個 I/O聚集器上所訪問的I/O數(shù)據(jù)的總量可以超過可以在其上分配的最大緩
沖器。當是所述情形時,所述i/o操作和進程間數(shù)據(jù)交換被安排到多次迭
代中。所述進度表用于導出所述迭代的最大次數(shù)。最后,在該步驟中,每 個I/O聚集器分配用于保存每個階段的1/0數(shù)據(jù)的空間。在進入下一步驟
之前,所述集中式操作試圖找出該集中式i/o調用是讀還是寫操作。取決
于需求,其進行到步驟卯8或卯9。步驟908、卯9和910合起來包括I/0 操作的一次迭代/階段。每次所述迭代都包含兩類操作1/0操作和進程間 數(shù)據(jù)交換。當所述集中式調用是文件讀時,步驟卯8 (I/O聚集器讀數(shù)據(jù)) 和909 (所有進程和I/O聚集器之間的I/O數(shù)據(jù)的全局交換)被進行。否 則,步驟卯9和910被進行,其中,步驟卯9和910是步驟908和卯9的 逆步驟。如果不再存在任何讀/寫操作,則所述集中式調用在步驟911退出。
計算和1/0的分離
在硬件和軟件層的計算和I/O的分離實現(xiàn)了可預測和可縮放的I/O性 能。對于并行系統(tǒng),已分割和均衡的計算和I/0節(jié)點組織是遞送可縮放1/0
性能的關鍵所在。我們的并行系統(tǒng)包括獨立的計算節(jié)點和i/o節(jié)點,其中,
計算節(jié)點被看作連接到I/O節(jié)點的計算引擎。
現(xiàn)在參考圖10,其示出了用于分離計算和i/o進程的步驟的流程圖。
在步驟1010中,處理節(jié)點被分離為執(zhí)行計算的處理器(計算節(jié)點)和僅運 行I/O守護進程的處理器(I/O節(jié)點)。所述計算節(jié)點和I/O節(jié)點然后3皮 組織為處理集合(pset) 1020,所述處理集合的每個都包含一個I/O節(jié)點 和固定數(shù)量的計算節(jié)點。每個pset中的計算節(jié)點的準確數(shù)量取決于系統(tǒng)配 置。所述1/0節(jié)點和計算節(jié)點的分離與其組織為均衡處理集合一起基本提
供了用于可縮放i/o需求的能力。
再次參考圖10,在步驟1050中,1/0相關的系統(tǒng)調用在計算節(jié)點中被 捕獲。在步驟1060中,所述系統(tǒng)調用被發(fā)送到其對應的I/0節(jié)點,以及在 步驟1070中,其^L駐留在其各自的I/O節(jié)點中的控制臺守護進程處理。
參考圖7,其示出了根據(jù)本發(fā)明的實施例的文件域分割機制的示例。 在該圖中,計算節(jié)點(CN) 301被組織為3個處理集合(pset) 701。在每 個pset 701中, 一組計算節(jié)點301被選作I/O聚集器502。在該機制中, 在pset 701中的計算節(jié)點301上發(fā)出的1/0請求被共同聚集到I/O聚集器 502上,并且由I/O聚集器502向I/O節(jié)點601重新發(fā)出。并且接著,I/O 節(jié)點601上的軟件將所述I/O請求轉發(fā)到后端文件系統(tǒng)。在I/O聚集過程 期間,所述機制將所有I/O請求的已聚集文件范圍702分割為文件域703 (線性文件的區(qū)域,由文件偏移量對定義),其中,每個所述文件域都對 應于一個I/0節(jié)點601。
分層字節(jié)范圍文件加鎖
圖12中示出了具有專用1/0節(jié)點守護進程的字節(jié)范圍文件加鎖和解鎖 機制的高級過程。該過程當運行在計算節(jié)點301上的計算進程1201向I/O 節(jié)點守護進程1202發(fā)出字節(jié)范圍文件加鎖請求時開始。所述請求可以是用
于獲得鎖或釋,;改鎖的阻塞請求。所迷字節(jié)范圍由文件偏移量對指定。所述 I/O節(jié)點守護進程保持連接到該I/O節(jié)點的pset中的計算節(jié)點所保存的鎖 的文件加鎖狀態(tài)1203,以及所述請求被文件系統(tǒng)阻塞和被同一 pset中的不
同計算節(jié)點阻塞?;谠撔抡埱蠛蚷/o節(jié)點守護進程中所保持的狀態(tài),I/O
節(jié)點守護進程將與用于轉發(fā)所述字節(jié)范圍文件加鎖請求的文件系統(tǒng)交互, 更新本地保持的文件加鎖狀態(tài),或應答計算節(jié)點。
圖8示出了由用于保持文件加鎖狀態(tài)的I/O節(jié)點守護進程維護的數(shù)據(jù) 結構,所述數(shù)據(jù)結構擁有兩個列表本地保存鎖801和已阻塞鎖請求804。 本地保存鎖列表801包含本地保存鎖802的記錄列表。已阻塞鎖請求列表 804包含已阻塞請求805的記錄列表。所述本地保存鎖記錄和已阻塞請求 記錄都包括所述保存文件鎖的字節(jié)范圍信息、指示該鎖的擁有計算節(jié)點的 計算節(jié)點ID。所述本地保存鎖記錄包含對已阻塞請求803的引用的列表。 所述引用在存在^L本地保存請求阻塞的文件加鎖請求時的情形而被保持。 當所述擁有計算節(jié)點釋放鎖時,I/O節(jié)點守護進程可以檢查字節(jié)范圍或子 范圍與該被釋放的鎖重疊的已阻塞請求,并且接著決定其是否可以將該鎖 授權給已阻塞請求。每個已阻塞請求記錄保持文件系統(tǒng)已阻塞請求806的 列表。對于當鎖請求的字節(jié)范圍的一部分被本地保存鎖阻塞時的情形,I/O 節(jié)點守護進程根據(jù)文件系統(tǒng)已阻塞請求的列表來與文件系統(tǒng)交互。
圖lla和lib是處理文件加鎖和解鎖請求的I/O節(jié)點守護進程的詳細 流程圖。處理文件加鎖和解鎖的功能性被定義為1/0節(jié)點守護進程中的模 塊。參考圖lla, I/O節(jié)點守護進程當其接收到來自計算節(jié)點1101的字節(jié) 范圍文件加鎖請求時進入所述模塊。I/O節(jié)點守護進程在步驟1102退出所 述模塊。步驟1103檢查請求類型。如果請求是阻塞鎖請求,則步驟1104 至1112被執(zhí)行。如果請求是鎖釋放請求,則如圖llb中所示,步驟1U3 至1118被執(zhí)行。
步驟1104首先將新到來的文件加鎖請求注冊到已阻塞鎖請求列表804 中。然后,其計算該新請求與本地保存鎖中那些的文件字節(jié)范圍的重疊。 該步驟用于確定是否存在任何保存該新請求的字節(jié)范圍的全部或一部分的
本地保存鎖記錄。并且其后指示新請求的文件區(qū)域的所述部分已由與發(fā)出
該新請求的計算節(jié)點在同一pset中的其它計算節(jié)點加鎖。
步驟1105測試新請求與本地保存鎖之間是否存在重疊。當該測試返回 真(TRUE)時,步驟1106將該新請求在已阻塞鎖請求中的引用添加到本 地保存鎖中。步驟1107測試該新請求是否被阻塞以及僅被本地保存鎖阻 塞,即不需要調用文件系統(tǒng)來請求鎖。如果所述測試返回真(TRUE), 則I/O節(jié)點守護進程將在不應答發(fā)出該請求的計算節(jié)點的情況下退出所述 模塊。如果所述測試返回假(FALSE ),其意味著該鎖請求的字節(jié)范圍的 一部分未被本地保存(被同一 pset中的計算節(jié)點保存),則步驟1108 (主 要向后端文件系統(tǒng))發(fā)出非阻塞文件加鎖調用。
步驟1109檢查所述非阻塞文件加鎖調用的返回值。如果其返回假,則 I/O節(jié)點守護進程將在延遲1110后重新發(fā)出該非阻塞請求。如果1109中 的測試返回真,并且不存在任何具有與進行中的請求重疊的字節(jié)范圍的本 地保存鎖(測試1111),則I/O節(jié)點守護進程應答發(fā)出所述請求的計算節(jié) 點,并且授權所請求的鎖1112。如果測試llll返回假,其意味著進行中 的請求的字節(jié)范圍的一部分被同一pset中的計算節(jié)點加鎖,則1/0節(jié)點守 護進程退出模塊1102。當同一pset中的其它計算節(jié)點釋放對應鎖時,該進 行中的鎖請求將被授權。
現(xiàn)在參考圖lib,當I/O節(jié)點守護進程接收到用于釋放鎖的請求時, 步驟1113首先定位本地保存鎖列表801中的文件加鎖記錄,并且檢查其是 否已在阻塞從同一 pset中的計算節(jié)點發(fā)出的任何加鎖請求。如果測試1114 返回真,則步驟1115將鎖授權給已阻塞請求列表中的待處理請求,并且將 所述記錄移動到本地保存鎖列表中。如果正進行釋i文的鎖的字節(jié)范圍的一 部分或全部不被已阻塞請求列表中的記錄請求,則步驟1116發(fā)出鎖釋放調 用。步驟1117應答于發(fā)出該鎖釋放調用的計算節(jié)點。然后,步驟1118應 答于待處理文件加鎖請求剛好被授權的計算節(jié)點。
集成三層文件系統(tǒng)
現(xiàn)在參考圖6,其示出了被引入根據(jù)本發(fā)明的實施例的三層基于GPFS
并行文件i/o體系結構中的1/0聚集器。所述體系結構的第一層包括作為 GPFS客戶機的I/O節(jié)點601,而第二層是主要提供后端存儲資源的虛擬化 的NSD (網(wǎng)絡共享磁盤)服務器404的陣列。第三層包括存儲區(qū)域網(wǎng)絡 (SAN)結構405和實際磁盤104。 I/O節(jié)點601與NSD服務器404之間 的互連是以太網(wǎng)403,而第二與第三層之間的連接可以是光纖信道、光纖 信道交換才幾或以太網(wǎng)(iSCSI) 。 NSD服務器404、 SAN結構405和存儲 設備的選擇取決于客戶需求。
一種集成三層并行文件I/O解決方案提供從系統(tǒng)計算節(jié)點301的高效 和可縮放磁盤數(shù)據(jù)訪問。根據(jù)本發(fā)明所述的可縮放并行I/O解決方案使用 例如GPFS的并行文件系統(tǒng)作為骨干文件系統(tǒng)。其允許并行應用從安裝該 文件系統(tǒng)的節(jié)點對相同文件或不同文件的并發(fā)訪問。到目前為止,已測試 的最大GPFS集群包含數(shù)千Linux節(jié)點。
現(xiàn)有并行文件系統(tǒng)(例如GPFS)在具有大塊I/O操作的連續(xù)的和規(guī) 則條帶化的文件訪問方面表現(xiàn)良好。然而,對于科學應用頻繁遇到的小塊 和不規(guī)則文件訪問模式,現(xiàn)有并行文件系統(tǒng)并不適當處理,其導致嚴重的 性能損失。在優(yōu)化MPII/0集中式操作時,根據(jù)本發(fā)明實現(xiàn)的方法補充了 現(xiàn)代大規(guī)模文件系統(tǒng)的性能約束,并且處理應用中頻,到的小塊和非相 鄰數(shù)據(jù)訪問的i/o請求。特別地,我們的方法在寫入文件之前將數(shù)據(jù)聚集 到存儲器中,其減少了磁盤訪問的次數(shù)。
MPI I/O集中式操作的兩階段實現(xiàn)提供結構被發(fā)送的可能,并且優(yōu)化
訪問4莫式可以達到。
因此,盡管已描述了當前所認為的優(yōu)選實施例,但本領域的技術人員 應當理解,在本發(fā)明的精神內可以作出其它修改。
權利要求
1.一種用于實現(xiàn)大規(guī)模并行文件輸入/輸出處理的方法,所述方法包括以下步驟將處理節(jié)點分離為計算節(jié)點和輸入/輸出節(jié)點,其中,計算節(jié)點是專用于計算的計算機處理器,以及輸入/輸出節(jié)點是限于運行輸入/輸出守護進程的計算機處理器;將所述計算節(jié)點和所述輸入/輸出節(jié)點組織為處理集合,所述處理集合包括對應于多個計算節(jié)點的一個專用輸入/輸出節(jié)點,其中,所述多個計算節(jié)點均勻地分布在參與的處理集合上;將來自每個處理集合的計算節(jié)點指派為變成用于向其對應輸入/輸出節(jié)點發(fā)出輸入/輸出請求的輸入/輸出聚集器,其中,所述輸入/輸出聚集器均勻地分布在所述處理集合上;使用集中式緩沖技術分割文件域,其中,數(shù)據(jù)在寫入文件之前被聚集到存儲器中;將已分割文件域的部分指派給處理集合;在所述計算節(jié)點中接收輸入/輸出相關的系統(tǒng)調用;將所述輸入/輸出相關的系統(tǒng)調用發(fā)送到對應的輸入/輸出節(jié)點;以及通過駐留在所述輸入/輸出節(jié)點中的系統(tǒng)輸入/輸出守護進程處理所述輸入/輸出相關的系統(tǒng)調用。
2. 根據(jù)權利要求l所述的方法,進一步包括這一步驟在運行所述輸 入/輸出節(jié)點的系統(tǒng)輸入/輸出守護進程中實現(xiàn)字節(jié)范圍文件加鎖代理,使 得同 一 處理集合中的計算節(jié)點間的沖突加鎖請求可以在不需要所述輸入/ 輸出節(jié)點與所述文件系統(tǒng)通信的情況下被解決。
3. 根據(jù)權利要求l所述的方法,其中,所述處理集合被組織為具有固 定數(shù)量的計算節(jié)點,該數(shù)量取決于所述系統(tǒng)配置。
4. 根據(jù)權利要求3所述的方法,其中,輸入/輸出節(jié)點對計算節(jié)點的 最優(yōu)比率取決于輸入/輸出帶寬需求。
5. 根據(jù)權利要求l所述的方法,其中,所述分割是靜態(tài)分割。
6. 根據(jù)權利要求l所述的方法,其中,所述組織步驟進一步包括消息 傳遞接口點到點通信操作。
7. 根據(jù)權利要求6所述的方法,其中,MPI—Alltoall被用于所述輸入 /輸出聚集器與參與的消息傳遞接口進程之間的文件數(shù)據(jù)聚集通信。
8. 根據(jù)權利要求l所述的方法,其中,所述分割步驟進一步包括所述 輸入/輸出聚集器在其間分割文件的輸入/輸出責任的過程。
9. 根據(jù)權利要求8所述的方法,其中,所述過程進一步集中式計算所 述輸入/輸出聚集器之間的文件分割,使得所述輸入/輸出聚集器的文件域 在大小和偏移量上都對齊到并行文件系統(tǒng)中的數(shù)據(jù)塊邊界。
10. 根據(jù)權利要求9所述的方法,其中,所述過程進一步包括以下步驟將所迷輸入/輸出聚集器的訪問范圍的開始點和結束點對齊到所述數(shù) 據(jù)塊邊界;將第 一個輸入/輸出聚集器的開始對齊到所述訪問范圍的開始;以及 將最后 一個輸入/輸出聚集器的結束對齊到所述訪問范圍的結束。
11. 根據(jù)權利要求1所述的方法,其中,將所述數(shù)據(jù)聚集到存儲器中 進一步包括以下步驟所有輸入/輸出聚集器聚集來自所有進程的輸入/輸出請求;所述輸入/輸出聚集器的每個計算用于安排輸入/輸出和進程間數(shù)據(jù)交 換的進度表,從而確定所述輸入/輸出聚集器的每個上所訪問的數(shù)據(jù)的總量 是否超過最大緩沖器大?。蝗绻_定輸入/輸出數(shù)據(jù)的總量超過所述最大緩沖器大小,則將所述輸 入/輸出和進程間數(shù)據(jù)交換安排到多次迭代中;以及所述輸入/輸出聚集器的每個分配每個階段用于保存所迷輸入/輸出數(shù) 據(jù)的空間。
12. —種并行文件輸入/輸出系統(tǒng),包括 第一層,包括至少一個處理集合,其包括對應于多個計算節(jié)點的一個專用輸 入/輸出節(jié)點,其中,所述計算節(jié)點是所述輸入/輸出節(jié)點的計算引擎,以 及其中,所述計算節(jié)點中的一些被選為變成用于向所述輸"輸出節(jié)點發(fā)出 輸入/輸出請求的輸入/輸出聚集器;第二層,包括網(wǎng)絡共享磁盤的陣列;第三層,包括存儲區(qū)域網(wǎng)絡結構和磁盤;所述輸入/輸出節(jié)點與所述網(wǎng)絡共享> 茲盤之間的互連;所述第二與所述第三層之間的連接;以及骨干并行文件系統(tǒng)。
13. 根據(jù)權利要求12所述的系統(tǒng),其中,所迷輸入/輸出節(jié)點與所述 網(wǎng)絡共享磁盤之間的互連是以太網(wǎng)。
14. 根據(jù)權利要求12所述的系統(tǒng),其中,所述第二與所述第三層之間 的連接從包括以下的組中選出光纖信道、光纖信道交換機和以太網(wǎng)。
15. 根據(jù)權利要求12所述的系統(tǒng),其中,所述骨干并行文件系統(tǒng)是例 如通用并行文件系統(tǒng)的并行文件系統(tǒng)。
16. 根據(jù)權利要求12所述的系統(tǒng),進一步包括 運行所述輸入/輸出節(jié)點的系統(tǒng)輸入/輸出守護進程。
17. 根據(jù)權利要求16所述的系統(tǒng),其中,所迷系統(tǒng)輸入/輸出守護進 程進一步包括字節(jié)范圍文件加鎖代理,其使得同 一處理集合中的計算節(jié)點間的沖突 加鎖請求可以在不需要所述輸入/輸出節(jié)點與所述文件系統(tǒng)通信的情況下 被解決。
18. 根據(jù)權利要求12所述的系統(tǒng),其中,至少一個處理集合被組織為 具有固定數(shù)量的計算節(jié)點,該數(shù)量取決于所述系統(tǒng)配置。
19. 根據(jù)權利要求18所述的系統(tǒng),其中,輸入/輸出節(jié)點對計算節(jié)點 的最優(yōu)比率取決于輸入/輸出帶寬需求。
全文摘要
一種實現(xiàn)大規(guī)模并行文件I/O處理的方法包括將處理節(jié)點分離為專用于計算的計算節(jié)點和I/O節(jié)點(限于運行I/O守護進程的計算機處理器);將計算節(jié)點和I/O節(jié)點組織為處理集合,其包括對應于多個計算節(jié)點的一個專用I/O節(jié)點。I/O相關的系統(tǒng)調用在計算節(jié)點中接收到,然后被發(fā)送到對應I/O節(jié)點。I/O相關的系統(tǒng)調用通過駐留在I/O節(jié)點上的系統(tǒng)I/O守護進程被處理。多個計算節(jié)點均勻分布在參與的處理集合上。另外,對于集中式I/O操作,來自每個處理集合的計算節(jié)點被指派為用于向其對應I/O節(jié)點發(fā)出I/O請求的I/O聚集器,I/O聚集器均勻分布在處理集合上。另外,文件域使用集中式緩沖技術來分割,其中,數(shù)據(jù)在寫入文件之前被聚集到存儲器中;已分割文件域的部分被指派給處理集合。
文檔編號G06F13/12GK101187906SQ20071016941
公開日2008年5月28日 申請日期2007年11月13日 優(yōu)先權日2006年11月22日
發(fā)明者J·E·莫雷拉, R·K·薩胡, 浩 于 申請人:國際商業(yè)機器公司