對于存儲系統(tǒng)來說,信息資源的爆炸性增長在I/O支持應(yīng)用的性能以及數(shù)據(jù)可用性等方面提出了越來越高的要求??梢灶A(yù)見,人工智能、大數(shù)據(jù)和圖計算等新型計算模式對存儲系統(tǒng)的I/O性能更是提出了極致要求。從技術(shù)發(fā)展趨勢上來看,新型的網(wǎng)絡(luò)傳輸硬件及使用模式、新型存儲硬件都提供了極高的訪問帶寬和極低的訪問時延,這一發(fā)展趨勢導(dǎo)致現(xiàn)有的存儲軟件成為性能瓶頸。特別是在提供低時延訪問上,存儲軟件的結(jié)構(gòu)需要進行革新。
傳統(tǒng)的分布式文件系統(tǒng)結(jié)構(gòu)按照擴展的方式來看,主要有兩個發(fā)展思路。一個是先對磁盤進行擴展,之后在擴展的磁盤基礎(chǔ)上建立文件系統(tǒng),提供服務(wù)。這個方面的典型是Petal磁盤擴展服務(wù)以及Frangipani文件系統(tǒng)。在高性能文件系統(tǒng)中,這個方面的典型是IBM公司的通用并行文件系統(tǒng)(general parallel file system,GPFS)。另外一個發(fā)展思路是直接對文件系統(tǒng)進行擴展,由一個或者少數(shù)幾個節(jié)點來保存元數(shù)據(jù),記錄文件數(shù)據(jù)的分布情況,其他的節(jié)點用來保存數(shù)據(jù)。這方面的典型是Google文件系統(tǒng)(Google file system)以及衍生的Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)。在高性能文件系統(tǒng)中,采用該思路的是大部分高性能計算機標配的Lustre文件系統(tǒng)。傳統(tǒng)的高性能文件系統(tǒng)在構(gòu)造時大部分將磁盤作為數(shù)據(jù)的存儲介質(zhì)。但是,現(xiàn)有的文件系統(tǒng)不能滿足新一代的人工智能、大數(shù)據(jù)、機器學(xué)習(xí)等的應(yīng)用,對于新的存儲體系結(jié)構(gòu)、新的網(wǎng)絡(luò)體系結(jié)構(gòu)帶來的高帶寬、低時延的性能優(yōu)勢也缺乏考慮。
在當前數(shù)據(jù)密集型計算普及發(fā)展的時代,存儲軟件的訪問性能直接制約了數(shù)據(jù)密集型計算的性能。下一代的存儲系統(tǒng)剛剛開始起步,包括Intel分布式異步對象存儲(distributed asynchronous object storage,DAOS)在內(nèi)的新型存儲結(jié)構(gòu)與系統(tǒng)正在形成。為了適應(yīng)這種趨勢,清華大學(xué)計算機系的E級計算機系統(tǒng)結(jié)構(gòu)研究團隊構(gòu)建了下一代的分布式存儲系統(tǒng)——MadFS,從分布式文件系統(tǒng)軟件的架構(gòu)上進行革新,消除現(xiàn)有存儲架構(gòu)的系統(tǒng)性問題,充分釋放硬件的性能,滿足下一代應(yīng)用對數(shù)據(jù)快速處理的需求。MadFS的設(shè)計以性能為第一原則,利用高速遠程直接內(nèi)存訪問(remote direct memory access,RDMA)網(wǎng)絡(luò)和NVMe SSD存儲設(shè)備,將數(shù)據(jù)快速分散到存儲節(jié)點上進行持久化,達到高吞吐、低時延、高性能的特性。
MadFS的系統(tǒng)架構(gòu)設(shè)計遵循了以下3個關(guān)鍵的設(shè)計原則。
● 數(shù)據(jù)塊和元數(shù)據(jù)的全分散存儲:傳統(tǒng)并行或者分布式文件系統(tǒng)一般使用少量節(jié)點管理元數(shù)據(jù),導(dǎo)致元數(shù)據(jù)節(jié)點成為整個系統(tǒng)的性能瓶頸。下一代分布式存儲系統(tǒng)MadFS將元數(shù)據(jù)分散到全部節(jié)點上,以避免元數(shù)據(jù)的性能瓶頸,同時數(shù)據(jù)塊也需要分散在全部節(jié)點上。
● 建立內(nèi)核旁路,避免操作系統(tǒng)切換開銷:為了提高系統(tǒng)的性能,MadFS采用避免應(yīng)用程序頻繁進入操作系統(tǒng)內(nèi)核的方式來降低上下文切換的開銷。隨著I/O設(shè)備性能的不斷提高,操作系統(tǒng)進出內(nèi)核切換的開銷日益突出,MadFS使用用戶態(tài)驅(qū)動、協(xié)議棧等方式直接控制設(shè)備。在對應(yīng)用程序的支持上使用系統(tǒng)調(diào)用截獲技術(shù),直接在用戶態(tài)處理應(yīng)用的I/O請求,避免其進入內(nèi)核。
● 語言級協(xié)程機制與零拷貝序列化:MadFS利用Rust語言內(nèi)建的異步協(xié)程機制、零拷貝序列化技術(shù)實現(xiàn)了極低開銷的任務(wù)切換和遠程函數(shù)調(diào)用。高性能存儲系統(tǒng)常采用異步的方式處理I/O請求,這會給編程引入很大的復(fù)雜性。而新型編程語言Rust提供了利用協(xié)程處理異步邏輯的語言機制,可以極大地降低異步編程的復(fù)雜性,同時保持極低的任務(wù)切換開銷,保證整體的高性能。
2020年11月19日,由清華大學(xué)計算機科學(xué)與技術(shù)系存儲系統(tǒng)研發(fā)團隊研發(fā)的超算緩存文件系統(tǒng)MadFS在鵬城實驗室“鵬城云腦Ⅱ”的IO500測試中,分別以7 043.99分和1 129.75分同時獲得全球IO500總榜第一名與10節(jié)點榜單第一名,這是國內(nèi)科研機構(gòu)首次奪得該排行榜榜首?!谤i城云腦Ⅱ”是一臺基于華為鯤鵬920架構(gòu)的高性能計算系統(tǒng),于2020年10月開始試運行。本次“鵬城云腦Ⅱ”的存儲系統(tǒng)基于MadFS,針對“鵬城云腦Ⅱ”的硬件特征,采用了基于Rust的高可擴展并發(fā)訪問、大粒度數(shù)據(jù)緩存/旁路訪問、數(shù)據(jù)訪問/落盤流水化、零拷貝極速遠程過程調(diào)用(remote procedure call,RPC)處理技術(shù)等創(chuàng)新優(yōu)化方法。
IO500是高性能計算領(lǐng)域針對存儲性能評測的全球排行榜,是高性能計算領(lǐng)域權(quán)威的榜單之一。IO500測試包括數(shù)據(jù)帶寬BW(GiB/s)和元數(shù)據(jù)性能MD(kIOPS)兩大部分,各項分數(shù)取幾何平均后得到總分。在高性能計算領(lǐng)域,不僅CPU算力非常重要,I/O系統(tǒng)的數(shù)據(jù)傳輸更是瓶頸。自2017年11月開始,每年IO500榜單會在高性能計算領(lǐng)域的會議——全球超級計算大會(SC)和國際超級計算大會(International Supercomputing Conference)上發(fā)布。 □