內(nèi)容提要:
新型非易失存儲器具有低延遲、高密度和非易失的特性,速度也接近DRAM,但技術(shù)尚未成熟,大部分還是處于研究階段。 從目前發(fā)展趨勢來看,有兩大陣營:一種是代替當(dāng)前的DRAM 和FLASH,在傳統(tǒng)的馮·諾依曼體系下的SCM (Storage Class Memory);另一種是非馮·諾依曼體系下的,既可以做存儲,又可以在原位進(jìn)行計算,即存算一體或存算融合,如將人工智能或圖像處理的算法等融合進(jìn)去。
由于相變存儲器PCM 和電阻式存儲器RRAM都可以看作是憶阻器,因此可以用來做存儲,也可以做存算一體,這兩條路徑一直都在向前發(fā)展。 磁阻存儲器的發(fā)展歷程如圖7 所示。
圖7 磁阻存儲器的發(fā)展歷程Figure 7 Development history of magnetoresistive memory
磁阻存儲器主要包括傳統(tǒng)的MRAM 和自旋轉(zhuǎn)移矩MRAM(STT-MRAM)。 傳統(tǒng)的MRAM 通過電流流過產(chǎn)生磁場改變MTJ (Magnetic Tunnel Junction)中的自由層磁矩方向,其特點(diǎn)是結(jié)構(gòu)復(fù)雜、干擾大。 STT-MRAM 是第二代MRAM 技術(shù),通過自旋電流實(shí)現(xiàn)自由層磁矩方向的改變。 美國的Everspin 公司一直是MRAM 產(chǎn)品的領(lǐng)導(dǎo)者, 已推出了多款獨(dú)立式和嵌入式MRAM 存儲器,并于2020 年發(fā)布了28nm 單片1Gb STT-MRAM 芯片。
3.1.1 磁阻存儲器研究現(xiàn)狀
目前有關(guān)磁阻存儲器的研究比較豐富,主要包括以下幾方面:
單元、 陣列級別的研究:22nm,32 2Mb eSTTRAM 設(shè)計,低延遲高壽命,并對磁場干擾免疫;3D擴(kuò)展,3D1S1R 結(jié)構(gòu); 將FinFET (鰭式場效應(yīng)晶體管,F(xiàn)in Field-Effect Transistor) 和STT-RAM 集成,用于降低系統(tǒng)的延遲和面積。
可靠性方面的研究:Last Level Cache(LLC),破壞讀問題,延遲恢復(fù)機(jī)制;STT-MRAM based FPGA,干擾感知內(nèi)存分組; 兩個MLC 存儲3 位的數(shù)提升可靠性和性能。
MLC 單元優(yōu)化的研究:采用MLC 的兩位組成快慢區(qū)域;采用數(shù)據(jù)編碼,最小兩步狀態(tài)轉(zhuǎn)換提升MLC 壽命和性能;對MLC 硬位和軟位分別編碼減少兩步寫能耗; 對MLC 進(jìn)行編碼, 實(shí)現(xiàn)一次寫操作,從而提升壽命和能效。
應(yīng)用于GPU 的研究: 將STT-RAM 用于GPU中的L1 Cache,減少片外訪問,提升性能和能效;將STT-RAM 用于GPU 的寄存器文件,采用壓縮方法減少能耗。
存內(nèi)計算架構(gòu)的研究:將SOT-MRAM((Spin-Orbit Torque MRAM))應(yīng)用于存內(nèi)計算架構(gòu)設(shè)計以提升性能。
3.1.2 MLC STT-RAM 的研究
我們也對MLC STT-RAM 進(jìn)行了研究。 由于它是通過堆疊兩個不同大小的MTJ 單元構(gòu)成MLC STT-RAM 單元,相較于SLC 單元,密度約是其2 倍,需要采用兩步讀寫操作,對硬位的寫操作會延遲和消耗更多的時間, 對性能和能耗都會產(chǎn)生影響。
同時,我們發(fā)現(xiàn)MLC STT-RAM 存在較嚴(yán)重的壽命問題(<1010次),這也是兩步寫操作導(dǎo)致的,兩步寫操作同時導(dǎo)致了大量的寫能耗和較高的寫延遲。 測試發(fā)現(xiàn), 對硬位的寫對壽命的影響達(dá)到了70%,而軟位則只有30%①Wei Zhao, Wei Tong, Dan Feng,et al.OSwrite∶Improving the lifetime of MLC STT-RAM with One-Step write[C]// 36th International Conference on Massive Storage Systems and Technology.MSST,2020.。
針對此問題, 我們的基本思路是通過負(fù)載分析,用壓縮的方法將緩存行全部寫到軟行,實(shí)現(xiàn)一步寫操作;而對不能壓縮的行,用hard flag 記錄硬位翻轉(zhuǎn)信息,實(shí)現(xiàn)一步寫操作。 通過內(nèi)存負(fù)載測試發(fā)現(xiàn), 該方案可以提高2.6 倍的壽命, 減少能耗56.2%,提升性能6.4%④。
相變存儲器簡稱PCM, 它是利用特殊材料在晶態(tài)和非晶態(tài)之間相互轉(zhuǎn)化時所表現(xiàn)出來的導(dǎo)電性差異來存儲數(shù)據(jù)。如圖8 所示為相變存儲的發(fā)展歷程。
圖8 相變存儲器的發(fā)展歷程Figure 8 Development history of phase change memory
因?yàn)閺木B(tài)到非晶態(tài)和從非晶態(tài)到晶態(tài),對操作時間和溫度的要求不一樣, 所以它的特點(diǎn)是:RESTE 延遲低,但功耗比較高;SET 過程延遲高,但功耗比較低。 相應(yīng)地,相變存儲器需要在功耗和延遲方面進(jìn)行優(yōu)化。
現(xiàn)在比較成熟的一款產(chǎn)品是Intel 和鎂光合作的3D XPoint 相變存儲器, 它運(yùn)用的是雙層架構(gòu)。Intel 公司比較看好這款產(chǎn)品是因?yàn)樗芏缺容^高。同樣芯片體積,3DXPoint 相變存儲器的存儲容量是DRAM 的8~10 倍,而能耗基本相當(dāng)。
3.2.1 相變存儲器操作方案研究現(xiàn)狀
有關(guān)相變存儲器的研究主要有以下幾個方面:
存儲單元讀/寫操作可靠性問題研究。 針對晶格結(jié)構(gòu)松弛引起的阻值狀態(tài)漂移導(dǎo)致讀不準(zhǔn),采取適應(yīng)數(shù)據(jù)保持時間的動態(tài)讀閾值參考設(shè)置及單元狀態(tài)刷新;針對非線性的電流電壓特性曲線導(dǎo)致讀不準(zhǔn),采取兩步讀操作擴(kuò)大讀窗口;針對焦耳熱干擾導(dǎo)致RESET 操作過程中相鄰單元狀態(tài)出錯,設(shè)置單元間熱量屏障層,并通過數(shù)據(jù)編碼來減少容易產(chǎn)生熱干擾的數(shù)據(jù)模式;對角單元布局結(jié)合數(shù)據(jù)壓縮;通過數(shù)據(jù)壓縮將要寫入的單元位置交替地分布在一行的兩端。
PCM 作主存時,對其壽命和性能優(yōu)化的研究。主要包括:減少熱區(qū)數(shù)據(jù)寫延遲,減少set 操作;通過減少PCM 陣列的互聯(lián)電阻,減少延遲。
大數(shù)據(jù)、人工智能計算環(huán)境下的存儲墻問題研究。 主要是構(gòu)建存算融合的計算內(nèi)存,并發(fā)掘新應(yīng)用,根據(jù)應(yīng)用特征進(jìn)行優(yōu)化,包括:16.5 萬個相變存儲單元構(gòu)成陣列做神經(jīng)形態(tài)計算;相變存儲單元做時間相關(guān)性檢測;相變存儲陣列做科學(xué)計算;相變存儲器用于存內(nèi)超維計算等。
3.2.2 我們對相變存儲器的相關(guān)研究
我們對相變存儲器的研究主要是通過壓縮編碼方式提升其壽命和性能。
(1)利用冗余字提升標(biāo)志位的利用率
因?yàn)镃PU 以字為單位進(jìn)行寫, 因此可能會寫入相同的數(shù)據(jù),造成相變存儲器負(fù)載中存在大量冗余字。 如當(dāng)緩存行中有4 個冗余字時,編碼標(biāo)志位的利用率只有50%②Xu J, Feng D, Hua Y, et al. Adaptive Granularity Encoding for Energy-efficient Non-Volatile Main Memory[C]// 2019 56th ACM/IEEE Design Automation Conference (DAC). IEEE, 2019.。為了提升標(biāo)志位利用率,我們將編碼標(biāo)志位分配給臟的字, 編碼粒度從16 降為8。 但標(biāo)志位利用率提升到100%,導(dǎo)致標(biāo)志位的位翻轉(zhuǎn)增加。我們又利用了連續(xù)位翻轉(zhuǎn)特性減少位翻轉(zhuǎn)(SAE),對每一行進(jìn)行分析,選擇位翻轉(zhuǎn)總數(shù)最少對應(yīng)的編碼粒度,對緩存行進(jìn)行編碼,以此降低功耗和提高寫速度。
(2)非易失內(nèi)存系統(tǒng)需要保持原子一致性
存儲過程中, 存儲控制器需要軟件和硬件配合,如果配合不好會出現(xiàn)一致性問題。在事務(wù)中,對同一地址的寫操作存在不同寫間隔分布, 其中44.8%的寫距離超過31,而寫距離太長會導(dǎo)致部分日志數(shù)據(jù)不能被丟棄。分析發(fā)現(xiàn),事務(wù)更新時,日志數(shù)據(jù)中存在大量的干凈字節(jié)數(shù)據(jù),70.5%的字節(jié)都是干凈的。 由于一致性維護(hù)開銷非常大,所以應(yīng)區(qū)別對待,不對70.5%的干凈字節(jié)數(shù)據(jù)進(jìn)行一致性維護(hù)。 具體來說,我們設(shè)置了日志數(shù)據(jù)選擇性編碼機(jī)制, 該機(jī)制對事務(wù)中數(shù)據(jù)的第一次更新同時記錄undo 和redo 數(shù)據(jù),后續(xù)更新只記錄redo 數(shù)據(jù)。undo數(shù)據(jù)及時寫入NVMM 以保證原子性,而redo 數(shù)據(jù)則緩沖在易失性日志緩沖區(qū)和L1 緩存中, 只將最新的redo 數(shù)據(jù)寫入NVMM 中。 利用日志數(shù)據(jù)的特點(diǎn),該方法直接丟棄日志數(shù)據(jù)中的干凈位,壓縮剩余的臟位。 經(jīng)實(shí)驗(yàn)驗(yàn)證, 此方案使寫能耗降低了49.9%,性能提升了72.5%③X Wei,D Feng,W Tong,J Liu,et al. MorLog∶Morphable Hardware Logging for Atomic Persistence in Non-Volatile Main Memory[C]// 47th edition of ISCA. ISCA,2020.。
二端無源金屬氧化物阻變存儲器(metal-oxide RRAM)是憶阻器的一種器件實(shí)現(xiàn),是一種新興的非易失存儲器。它是通過金屬氧化物的阻值狀態(tài)變化來實(shí)現(xiàn)數(shù)據(jù)存儲。 主流的阻變功能材料包括HfOx、TiOx、TaOx 等, 配套的電極材料包括TiN、Pt和Ti 等。 施加外加電壓時, 其阻值會發(fā)生連續(xù)變化,因此憶阻器可以用作存儲,也可以用作計算,如IMP 邏輯運(yùn)算和矩陣向量乘法。阻變存儲器的發(fā)展歷程如圖9 所示。
圖9 阻變存儲器發(fā)展歷程Figure 9 Development history of resistive random access memory
國際上,富士通、松下、Crossbar 公司和密歇根大學(xué)都推出了一些小容量和實(shí)驗(yàn)性的阻變存儲器產(chǎn)品。
3.3.1 阻變存儲器操作方案研究現(xiàn)狀
主要包括以下幾個方面:
第一,非理想因素影響下存儲陣列讀寫操作不可靠、性能差問題的研究。 針對互連線電壓降導(dǎo)致寫操作性能差,可采用雙端接地、雙端寫驅(qū)動器、最短電壓降路徑等;針對部分偏壓導(dǎo)致未選擇的單元受干擾,可設(shè)置干擾參考單元、檢測并刷新被干擾的行等;針對潛通電流導(dǎo)致讀操作不準(zhǔn)確,可采用四端電阻網(wǎng)絡(luò)、檢測并復(fù)用潛通電流和采用互補(bǔ)阻變單元等。
第二, 非理想因素影響下存儲陣列計算不準(zhǔn)確、能效低問題的研究。針對互連線電壓降、器件變化性、環(huán)境溫度導(dǎo)致計算不準(zhǔn)確,可采用互連線奇異值分解數(shù)據(jù)降維、邏輯行到物理行映射等;針對互連線電壓降、潛通電流導(dǎo)致計算能效低,采用三維陣列縮短平均互連長度等。
第三,基于阻變存儲器加乘運(yùn)算的靈活而通用的存算融合體系結(jié)構(gòu)的研究。 如可重配架構(gòu)、原位模擬運(yùn)算加速器等。
3.3.2 我們對阻變存儲器的相關(guān)研究
我們對阻變存儲器的研究主要集中在憶阻器存內(nèi)計算方面, 主要是面向人工智能的算法需求,實(shí)現(xiàn)了貝葉斯算法映射。
憶阻器可以用做近似計算單元,實(shí)現(xiàn)矩陣向量乘法④Prezioso M, Merrikh-Bayat F, Hoskins B D, et al. Training and operation of an integrated neuromorphic network based on metal-oxide memristors[J]. Nature,2015,521(7550)∶61-4.,將算法復(fù)雜度從O(n2)轉(zhuǎn)換為O(1),即不需要原來的平方運(yùn)算,只需要施加電壓和讀取電流即可完成矩陣運(yùn)算。 如進(jìn)行圖像處理時,即可以利用此算法。而傳統(tǒng)的矩陣運(yùn)算方法,要做乘加運(yùn)算,需要進(jìn)行數(shù)模轉(zhuǎn)換,會導(dǎo)致接口面積大(>30%)和延遲高(>50ns)的問題。 也有學(xué)者采用二進(jìn)制接口方式,雖使接口代價減小,但數(shù)值展開消耗了更多憶阻器單元和陣列資源。
而我們所做的就是將外圍電路簡化以及將貝葉斯算法映射到矩陣上面。 即針對ADCs 和復(fù)雜外圍電路會極大增加存內(nèi)計算架構(gòu)開銷的問題,第一次引入樸素貝葉斯算法在存內(nèi)計算架構(gòu)中實(shí)現(xiàn):利用現(xiàn)有存內(nèi)計算架構(gòu)兼容實(shí)現(xiàn)算法;針對性優(yōu)化算法映射,消除ADCs 龐大的開銷⑤Wu B, Feng D, Tong W, et al. ReRAM Crossbar-Based Analog Computing Architecture for Naive Bayesian Engine [C]// 2019 IEEE 37th International Conference on Computer Design (ICCD). IEEE, 2019.。
樸素貝葉斯算法是連續(xù)的乘法,我們對樸素貝葉斯公式施加了-log 函數(shù),將連續(xù)乘法轉(zhuǎn)換為點(diǎn)乘操作,這樣就可以在陣列位線上實(shí)現(xiàn),且數(shù)值為正,可直接由ReRAM 電導(dǎo)映射。
針對最小探測模塊, 傳統(tǒng)的方式是將其轉(zhuǎn)換為數(shù)字信號之后再進(jìn)行比較。 但我們發(fā)現(xiàn)可以直接進(jìn)行模擬并行比較,因此我們設(shè)計了外圍電路,通過二分探測和遞增探測,直到找到最小值,即參考電壓Vref同所有位線結(jié)果進(jìn)行模擬量比較,通過比較結(jié)果是否形成獨(dú)熱碼(one-hot code)來完成最小探測。
我們也對基于ReRAM 的樸素貝葉斯算法引擎的識別準(zhǔn)確度進(jìn)行了測試。 實(shí)驗(yàn)驗(yàn)證發(fā)現(xiàn),現(xiàn)有CPU 軟件實(shí)現(xiàn)、理想設(shè)備參數(shù)下的樸素貝葉斯算法引擎、 真實(shí)設(shè)備參數(shù)下的樸素貝葉斯算法引擎、PRIME 架構(gòu)兼容實(shí)現(xiàn)方式下的算法識別準(zhǔn)確度分別為89.6%,87.5%,88.2%和87.8%。 可以看出,真實(shí)設(shè)備參數(shù)下的樸素貝葉斯算法引擎的精度88.2%和軟件實(shí)現(xiàn)的精度89.6%非常接近。 由于人工智能算法并不需要非常精確,只需要確保判斷結(jié)果準(zhǔn)確即可, 因此該算法方案是可以實(shí)際使用的。且相比軟件實(shí)現(xiàn)來說, 其實(shí)現(xiàn)速度提高了11.2~2289.6 倍。⑧
新的存儲器件出現(xiàn)之后,現(xiàn)有文件系統(tǒng)往往是與其不匹配的。新型NVM(Non-volatile Memory)引發(fā)了存儲體系結(jié)構(gòu)的變革,如微軟推出了BPFS 文件系統(tǒng), 英特爾推出了PMFS 文件系統(tǒng),UCSD(University of California San Diego) 推出了NOVA和Moneta-D 文件系統(tǒng),清華大學(xué)推出了HiNFS 文件系統(tǒng), 華中科技大學(xué)則推出了Object-based NVM Management 文件系統(tǒng), 以適合NVM 的特性和調(diào)度方式。
4.1.1 傳統(tǒng)文件系統(tǒng)遷移到NVM 的問題
當(dāng)Intel Optane DC PMM (Persistent Memory Module)出現(xiàn)后,我們也對其進(jìn)行了測試,發(fā)現(xiàn)它的效率達(dá)不到其標(biāo)注數(shù)值,原因是沒有針對其架構(gòu)對文件系統(tǒng)進(jìn)行優(yōu)化。 基于新型NVM 的存儲系統(tǒng)相對于傳統(tǒng)磁盤存儲系統(tǒng)的如下特點(diǎn),導(dǎo)致傳統(tǒng)文件系統(tǒng)遷移到新型NVM 存在一系列問題。
(1)I/O 瓶頸轉(zhuǎn)移
分析發(fā)現(xiàn)數(shù)據(jù)I/O 路徑上各階段的開銷比例產(chǎn)生了巨大的變化,軟件開銷開始變得不可忽略。
(2)數(shù)據(jù)一致性層次轉(zhuǎn)移
傳統(tǒng)結(jié)構(gòu)中, 數(shù)據(jù)易失和非易失分界線在DRAM 和外存之間;而NVM 主存中,數(shù)據(jù)易失和非易失分界線在CPU Cache 和NVM 之間。 因此,需要專門的CPU Cache 指令以及額外硬件原語來保證數(shù)據(jù)的一致性。
(3)有限的寫入耐久性
傳統(tǒng)的存儲I/O 棧系統(tǒng)軟件主要是針對磁盤設(shè)計的。若直接將這種針對磁盤存儲的系統(tǒng)軟件應(yīng)用于NVM 存儲系統(tǒng), 則會導(dǎo)致NVM 存儲設(shè)備的快速磨損。
4.1.2 基于NVM 的文件系統(tǒng)研究現(xiàn)狀
(1)NVM 作為內(nèi)存設(shè)備,利用傳統(tǒng)VFS 路徑的文件系統(tǒng)
如對SCMFS 文件系統(tǒng),如果無一致性、磨損均衡保障,TLB(Translation Lookaside Buffer)失效率高;對PMFS 文件系統(tǒng),使用線性表管理目錄,目前性能不如傳統(tǒng)文件系統(tǒng); 對NOVA 文件系統(tǒng),DRAM 和NVM 混合日志結(jié)構(gòu)文件系統(tǒng)沒能完全體現(xiàn)NVM 支持XIP(eXecute In Place)的特性,過于依賴DRAM 管理元數(shù)據(jù)和數(shù)據(jù)塊索引。
(2)用戶庫方式直接訪問NVM
包括基于SCM 的靈活文件系統(tǒng)接口; 對操作系統(tǒng)編譯程序、應(yīng)用程序均做修改; Quill 仍需進(jìn)入內(nèi)核態(tài),依賴于POSIX 文件系統(tǒng)接口。
4.2.1 混合存儲文件系統(tǒng)NOCFS:NVM+Flash
即文件系統(tǒng)中的大量數(shù)據(jù)使用Flash 存儲,而元數(shù)據(jù)使用NVM 進(jìn)行存儲,系統(tǒng)架構(gòu)如圖10 所示。
圖10 混合存儲文件系統(tǒng)NOCFS 架構(gòu)Figure 10 NOCFS architecture of hybrid storage file system
主要工作包括:
第一,NVM 和SSD 混合空間。文件系統(tǒng)直接管理NVM,NVM 存放元數(shù)據(jù),緩存熱數(shù)據(jù)。
第二,并行感知的數(shù)據(jù)同步機(jī)制,即多線程異步寫回。
第三,協(xié)作式垃圾回收。 文件系統(tǒng)層垃圾回收與LightNVM 垃圾回收結(jié)合。
對NOCFS 性能進(jìn)行測評, 采用較小容量的NVM,可以使閃存性能提升5 倍,接近于全NVM,與PMFS 文件系統(tǒng)性能相當(dāng)。
4.2.2 基于對象的NVM 管理器
不同NVM 存儲介質(zhì)讀寫性能差別較大,特性各異。 對象管理的思想就是把對NVM 的管理從文件系統(tǒng)中分離,以更低的管理開銷實(shí)現(xiàn)更加豐富的應(yīng)用接口,以充分發(fā)揮不同存儲介質(zhì)的優(yōu)勢。 存儲應(yīng)用可繞過文件系統(tǒng)直接訪問NVM 對象接口,精簡訪問路徑。 如圖11 所示為傳統(tǒng)文件系統(tǒng)和面向?qū)ο蟮奈募到y(tǒng)對比。
圖11 傳統(tǒng)文件系統(tǒng)和基于對象的文件系統(tǒng)對比Figure 11 Comparison of traditional file system and object-based file system
OBFS (Object-Based File System) 繞過VFS(Virtual File-system Switch)層,縮短了層次或路徑,實(shí)現(xiàn)了一個精簡的名字空間管理,保證其兼容性,直接截獲應(yīng)用的文件訪問系統(tǒng)調(diào)用,實(shí)現(xiàn)對上層應(yīng)用透明。 OBFS 由此消除了傳統(tǒng)基于磁盤的文件系統(tǒng)中很多不必要的開銷,提高了系統(tǒng)性能。
基于NVM 的輕量級存儲系統(tǒng)與傳統(tǒng)存儲系統(tǒng)相比,明顯縮短了I/O 路徑,能快速響應(yīng)應(yīng)用請求,讀寫性能優(yōu)于PMFS。 與基于新型非易失內(nèi)存文件系統(tǒng)NOVA、PMFS 相比,OBFS 可以獲得20%~30%的性能優(yōu)勢。 與RAMFS 相比,OBFS 的讀性能比RAMFS 性能好, 但寫性能比RAMFS 的性能要差一些。
軟件定義存儲是借鑒軟件定義網(wǎng)絡(luò)的思路,即將存儲的管理和調(diào)配與底層物理硬件分開,所有存儲相關(guān)的控制工作都僅在相對于物理存儲硬件的外部軟件中,用戶可以通過軟件控制資源并對其進(jìn)行優(yōu)化。 相關(guān)研究主要如下。
5.1.1 解決路徑過長帶來的挑戰(zhàn)
IOFlow 作為學(xué)術(shù)界第一篇關(guān)于軟件定義存儲的文章, 借鑒OpenFlow 在存儲環(huán)境中將控制平面和數(shù)據(jù)平面進(jìn)行分離, 在IO 棧的不同層次使用隊(duì)列對請求進(jìn)行限流,比如在hypervisor 里面的SMBc 和存儲服務(wù)器端的SMBs,保障虛擬機(jī)端到端的性能。⑥Thereska E, Ballani H, O'Shea G, et al. IOFlow∶A software-defined storage architecture[C]// Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. SOSP, 2013.
Moirai 提出了一種協(xié)同不同層次的cache 進(jìn)行資源管理的方法,既能夠最大化利用系統(tǒng)資源,還能有效對不同租戶間進(jìn)行性能隔離, 避免性能干擾。⑦Ioan Stefanovici,Eno Thereska,Greg O'Shea,et al.Software-defined caching∶managing caches in multi-tenant data centers[C]//Proceedings of the Sixth ACM Symposium on Cloud Computing. SoCC, 2015.
sRoute 把路由概念引入了存儲棧, 把IO 棧的各個層次當(dāng)作網(wǎng)絡(luò)中的一個個路由器,能夠根據(jù)不同的應(yīng)用制定路由策略, 使得IO 請求能夠在不同IO 層之間轉(zhuǎn)發(fā)。⑧Stefanovici, Ioan,Schroeder, Bianca,O'Shea, Greg, et al.Treating the Storage Stack Like a Network[C]// Proceedings of the 14th Usenix Conference on File and Storage Technologie. FAST, 2016.
5.1.2 解決資源管理的挑戰(zhàn)
即解決分布式系統(tǒng)內(nèi)資源多樣化(CPU、存儲、鎖等)以及任務(wù)多樣化(租戶產(chǎn)生的任務(wù)、系統(tǒng)產(chǎn)生的任務(wù)等)給資源管理帶來的挑戰(zhàn)。 如Retro 應(yīng)用于分布式環(huán)境,通過策略和機(jī)制的分離,能夠保障系統(tǒng)內(nèi)所有IO 任務(wù)的SLO (Service Level Objectives),比如租戶的性能需求,或者是心跳信息的延遲保障等。⑨Mace J, Peter Bodík, Fonseca R, et al. Retro∶Targeted Resource Management in Multi-tenant Distributed Systems [C]// Usenix Conference on Networked Systems Design & Implementation. NSDI, 2015.
5.1.3 解決租戶需求多樣化帶來的挑戰(zhàn)
Crystal 是一種應(yīng)用于對象存儲的軟件定義存儲架構(gòu), 在數(shù)據(jù)平面可以通過插入不同的filter 來提供不同的服務(wù)(壓縮、加密等),設(shè)計可擴(kuò)展的數(shù)據(jù)平面能夠使得Crystal 具有更豐富的功能。⑩Raúl Gracia-Tinedo, Josep Sampé, Zamora E, et al. Crystal∶Software-Defined Storage for Multi-Tenant Object Stores[C]// 15th USENIX Conference on File and Storage Technologies (FAST'17).FAST, 2017.
隨著可編程交換機(jī)的興起,使用網(wǎng)絡(luò)的計算及存儲資源來優(yōu)化存儲系統(tǒng)性能成為趨勢。Eris 提出在可編程交換機(jī)內(nèi)進(jìn)行并發(fā)控制,保障事務(wù)操作的有序性和一致性,降低存儲系統(tǒng)維護(hù)一致性帶來的開銷,優(yōu)化系統(tǒng)性能。?Li J,Michael E,Ports D R K . Eris∶Coordination-Free Consistent Transactions Using In-Network Concurrency Control [C]// Proceedings of the 26th Symposium on Operating Systems Principles. SOSP,2017.
NetCache 通過在可編程交換機(jī)內(nèi)做緩存,實(shí)現(xiàn)一種新的KV 存儲架構(gòu),利用交換機(jī)內(nèi)的存儲資源優(yōu)化存儲系統(tǒng)性能。?Jin X,Li X,Zhang H,et al. NetCache∶Balancing Key-Value Stores with Fast In-Network Caching [C]// Proceedings of the 26th Symposium on Operating Systems Principles.SOSP,2017.
我們也做了一些工作。 考慮到對服務(wù)器來說,只能根據(jù)上一個時刻狀態(tài)判斷是輕負(fù)載還是重負(fù)載,然后明確是否進(jìn)行副本服務(wù);副本放在很多個服務(wù)器當(dāng)中,如果都去訪問一個空閑服務(wù)器,會出現(xiàn)羊群效應(yīng),使該服務(wù)器出現(xiàn)重負(fù)載。 但與服務(wù)器只能根據(jù)過去狀態(tài)判斷負(fù)載的狀況不同,交換機(jī)非常清楚服務(wù)器負(fù)載,可根據(jù)當(dāng)前數(shù)據(jù)包數(shù)量判斷服務(wù)器負(fù)載狀況,判斷也會更加準(zhǔn)確。 因此,NetRS 通過在可編程交換機(jī)內(nèi)進(jìn)行副本選擇,有效降低應(yīng)用響應(yīng)延遲。?Jin X,Li X,Zhang H,et al. NetCache∶Balancing Key-Value Stores with Fast In-Network Caching [C]// Proceedings of the 26th Symposium on Operating Systems Principles.SOSP,2017.
我們對存儲可靠性做了兩方面的研究。
5.3.1 對編碼的研究
在網(wǎng)絡(luò)環(huán)境下,如果有節(jié)點(diǎn)壞掉或者不能訪問時,需要把數(shù)據(jù)從其他節(jié)點(diǎn)算回來,如果有節(jié)點(diǎn)訪問擁塞或鏈接不上,就得不到數(shù)據(jù)。在這種情況下,我們希望用少量節(jié)點(diǎn)就能將數(shù)據(jù)算回來,因此我們的主要思想是將節(jié)點(diǎn)上的數(shù)據(jù)分割為更多的數(shù)據(jù)塊,通過合理組合數(shù)據(jù)塊,實(shí)現(xiàn)最優(yōu)修復(fù)。 具體來說,我們提出具有最優(yōu)存儲和最優(yōu)重建數(shù)據(jù)量的編碼方法Z 碼。 Z 碼的參數(shù)n 和k 選擇靈活,碼率可以任意大;它并非MDS 碼(Maximum Distance Separable code), 但可以擴(kuò)展為GZ 碼且具有MDS 性質(zhì),且具有最小存儲下的最優(yōu)修復(fù)開銷。 對同樣的4 個節(jié)點(diǎn)來說, 對RS 碼需要3 個節(jié)點(diǎn)將數(shù)據(jù)算回來,RRS 碼平均需要2.3 個節(jié)點(diǎn), 而Z 碼只需要2個節(jié)點(diǎn)。 測試表明,Z/GZ 碼和最小存儲再生碼FMSR 和PM-MSR 具有相同的存儲開銷和修復(fù)開銷,但參數(shù)更靈活,且是系統(tǒng)碼。?Liu Q, Feng D, Jiangy H, et al. Z Codes∶General Systematic Erasure Codes with Optimal Repair Bandwidth and Storage for Distributed Storage Systems[C]// Proceedings of the 2015 IEEE 34th Symposium on Reliable Distributed Systems. SRDS,2015∶212-217.
5.3.2 硬盤故障預(yù)警技術(shù)
硬盤故障預(yù)警技術(shù)就是在節(jié)點(diǎn)壞之前進(jìn)行故障預(yù)警。 我們收集了惠普和微軟的壞盤數(shù)據(jù)集,然后進(jìn)行離線建模,具體包括數(shù)據(jù)預(yù)處理、特征選取、訓(xùn)練建模和參數(shù)調(diào)優(yōu)。具體流程如圖12 所示。在線預(yù)測時,首先進(jìn)行模型導(dǎo)入,包括導(dǎo)入特征選取映射、歸一化參數(shù)以及模型參數(shù);實(shí)時預(yù)測包括解析請求、過濾特征,然后估算預(yù)測的準(zhǔn)確度。
圖12 硬盤故障預(yù)警流程圖Figure 12 Hard disk failure warning flowchart
5.4.1 面向多租戶云存儲系統(tǒng)的軟件定義文件系統(tǒng)SDFS
現(xiàn)有云平臺往往將虛擬機(jī)的虛擬磁盤以大文件形式存放在用網(wǎng)絡(luò)連接的共享存儲節(jié)點(diǎn)上,以降低成本,方便管理。 但因此也會導(dǎo)致IO 棧復(fù)雜,帶來性能隔離挑戰(zhàn)。
文件系統(tǒng)決定了存儲資源的使用,不考慮文件系統(tǒng)的特性,性能隔離無從實(shí)現(xiàn)。因此,我們通過存儲服務(wù)器端文件粒度資源分配,保障虛擬機(jī)性能需求,控制文件系統(tǒng)影響,降低性能干擾;控制平面通過元數(shù)據(jù)來記錄和傳遞租戶性能需求;數(shù)據(jù)平面進(jìn)行資源調(diào)度,配合實(shí)現(xiàn)軟件定義的思想。
5.4.2 并行文件系統(tǒng)客戶端持久性高速緩存
主要思想是數(shù)據(jù)按需向計算節(jié)點(diǎn)遷移;特點(diǎn)是利用分層存儲管理和分布式鎖管理機(jī)制,采用統(tǒng)一命名空間管理高性能客戶端本地緩存;自定義緩存規(guī)則,客戶端本地緩存數(shù)據(jù)按需預(yù)取或替換;減少數(shù)據(jù)遷移和網(wǎng)絡(luò)擁塞,減輕服務(wù)端I/O 壓力和存儲開銷;提供性能隔離、QoS(Quality of Service)保障,對延遲敏感,I/O 局部性應(yīng)用效果顯著。
SDFS 能通過文件粒度的資源分配, 保障虛擬機(jī)的性能需求。 與Pulsar 相比,Pulsar 無法控制文件系統(tǒng)延遲寫帶來的影響, 所以無法做到性能隔離;而SDFS 能夠避免延遲寫帶來的干擾而保障各個租戶的性能需求。 在使用SDFS 進(jìn)行性能隔離的時候,虛擬機(jī)的性能波動降低4 倍以上。