国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

APMSS:一種具有非對稱接口的固態(tài)存儲系統(tǒng)

2018-09-21 03:26:44牛德姣賀慶建詹永照
計算機(jī)研究與發(fā)展 2018年9期
關(guān)鍵詞:存儲設(shè)備存儲系統(tǒng)固態(tài)

牛德姣 賀慶建 蔡 濤 王 杰 詹永照 梁 軍

(江蘇大學(xué)計算機(jī)科學(xué)與通信工程學(xué)院 江蘇鎮(zhèn)江 212013)(djniu@ujs.edu.cn)

計算機(jī)系統(tǒng)中各部件的發(fā)展具有很大的不均衡,當(dāng)前存儲部件的讀寫速度遠(yuǎn)低于計算部件的處理能力,這導(dǎo)致了嚴(yán)重的存儲墻問題[1].由于存在機(jī)械部件,傳統(tǒng)的磁盤很難有效提高讀寫速度.基于Flash的固態(tài)存儲設(shè)備具有較高的I/O性能,但存在寫壽命短和僅支持以塊為單位的讀寫操作等問題.當(dāng)前出現(xiàn)了一系列NVM存儲器件,如PCM[2],STT-RAM[3]和RRAM[4]等,具有支持以字節(jié)為單位的讀寫、較長的寫壽命、低功耗和接近DRAM的讀寫速度等優(yōu)勢,成為解決存儲墻問題的重要手段;同時NVM存儲器件的寫壽命和讀寫速度也還在不斷提高.此外3D XPoint等技術(shù)的出現(xiàn),使得用NVM改造現(xiàn)有基于Flash的固態(tài)存儲設(shè)備、構(gòu)建新型的高速固態(tài)存儲系統(tǒng)成為當(dāng)前研究的熱點.

但現(xiàn)有I/O系統(tǒng)軟件棧是面向低速外存系統(tǒng)所設(shè)計,難以適應(yīng)高速固態(tài)存儲系統(tǒng)讀寫性能較高的特性,相關(guān)研究表明在新型固態(tài)存儲系統(tǒng)中I/O系統(tǒng)軟件的開銷占總開銷的63%以上[5],因此如何提高I/O系統(tǒng)軟件的效率是固態(tài)存儲系統(tǒng)中需要解決的重要問題.PCIe固態(tài)存儲設(shè)備是當(dāng)前構(gòu)建高速固態(tài)存儲系統(tǒng)的重要基礎(chǔ),但其具有較大的局限性;為了獲得較高的傳輸效率PCIe接口以支持塊訪問方式為主,雖然可以改變每次傳輸?shù)拇笮?,但效率和靈活性還較低.當(dāng)前操作系統(tǒng)還是使用塊接口訪問PCIe固態(tài)存儲設(shè)備,無法利用內(nèi)部NVM存儲器件支持字節(jié)粒度讀寫的特點;在執(zhí)行寫操作時,以數(shù)據(jù)塊為單位的方式存在寫放大的問題,嚴(yán)重影響了固態(tài)存儲系統(tǒng)的讀寫性能和使用壽命;在執(zhí)行讀操作時,以數(shù)據(jù)塊為單位讀出的數(shù)據(jù)能用于基于局部性原理構(gòu)建的讀緩存,從而提高訪問存儲設(shè)備時的讀性能,同時讀操作對固態(tài)存儲系統(tǒng)的壽命也沒有影響.因此有必要針對分析讀寫操作的不同特性,研究管理粒度和方式不同的讀寫操作接口,用于構(gòu)建高效的固態(tài)存儲系統(tǒng).

我們設(shè)計具有非對稱接口的固態(tài)存儲系統(tǒng),以提高I/O性能和延長其使用壽命.本文的主要貢獻(xiàn)有4個方面:

1) 針對讀寫操作的不同特性,分離文件系統(tǒng)所提交的讀寫訪問請求,有效利用固態(tài)存儲系統(tǒng)內(nèi)部支持字節(jié)讀寫的特性.

2) 設(shè)計了多粒度的固態(tài)存儲系統(tǒng)映射算法,修改通用塊層的結(jié)構(gòu),為解決寫放大問題提供支撐.

3) 設(shè)計了動態(tài)粒度寫算法,避免寫放大問題,提高固態(tài)存儲系統(tǒng)的寫性能和延長其使用壽命.

4) 實現(xiàn)了一個具有非對稱接口固態(tài)存儲系統(tǒng)的原型(APMSS),使用Fio和Filebench進(jìn)行了測試,驗證了APMSS具有更高的寫性能.

1 相關(guān)工作

當(dāng)前的研究主要集中在使用NVM提高存儲系統(tǒng)的性能和針對固態(tài)存儲系統(tǒng)的新型文件系統(tǒng)方面.

1.1 新型NVM文件系統(tǒng)方面的研究

BPFS[6]和PMFS[7]是針對字節(jié)尋址的NVM存儲設(shè)備的新型文件系統(tǒng),提高I/O性能,降低讀寫延遲.BPFS使用短周期的影子分頁法實現(xiàn)8 b的原子寫操作和以及更細(xì)粒度的更新操作,并實現(xiàn)了硬件上寫操作的原子性和順序性.PMFS分離了元數(shù)據(jù)和數(shù)據(jù)的一致性保護(hù)方法,使用細(xì)粒度日志保護(hù)元數(shù)據(jù)的一致性;同時使用CoW策略實現(xiàn)數(shù)據(jù)寫操作,保護(hù)文件系統(tǒng)的可靠性和一致性.文獻(xiàn)[8]設(shè)計了SCMFS,使用操作系統(tǒng)的MMU管理NVM存儲設(shè)備中的數(shù)據(jù)塊,同時使用連續(xù)虛擬內(nèi)存空間管理單位文件簡化讀寫操作;并使用clflush/mfence機(jī)制保障執(zhí)行文件訪問操作的順序,但沒有給出如何保障文件系統(tǒng)的一致性.文獻(xiàn)[9]設(shè)計了Aerie,通過直接讓用戶態(tài)程序訪問NVM存儲設(shè)備中的數(shù)據(jù),避免現(xiàn)有I/O系統(tǒng)軟件棧需要進(jìn)行內(nèi)核和用戶態(tài)切換的時間開銷,同時也提供了POSIX接口以支持現(xiàn)有應(yīng)用;同時使用Mnemosyne[10]中的tornbit RAWL策略,保護(hù)文件系統(tǒng)的一致性.PMFS分離了元數(shù)據(jù)和數(shù)據(jù)的一致性保護(hù)方法,使用細(xì)粒度日志保護(hù)元數(shù)據(jù)的一致性;同時使用CoW策略實現(xiàn)數(shù)據(jù)寫操作,保護(hù)文件系統(tǒng)的可靠性和一致性.文獻(xiàn)[11]針對現(xiàn)有以數(shù)據(jù)塊為單位的寫操作機(jī)制中,存在寫少量數(shù)據(jù)需先完成冗余讀操作的問題,修改虛擬文件系統(tǒng)設(shè)計了非數(shù)據(jù)塊粒度的寫機(jī)制,應(yīng)用于磁盤能提高7~45.5倍的寫性能,應(yīng)用于基于Flash的SSD能提高2.1~4.2倍的寫性能.NOVA是針對DRAM和NVM混合情況的日志文件系統(tǒng)[12],通過為每個inode節(jié)點維護(hù)一個日志提高并發(fā)性和用原子更新實現(xiàn)日志的追加等,在保護(hù)文件系統(tǒng)的一致性和操作原子性的同時,能相比現(xiàn)有具有一致性保護(hù)的文件系統(tǒng)能提高3.1~13.5倍的性能.FCFS是針對NVM的新型文件系統(tǒng)[13],設(shè)計了多層次的混合粒度日志,針對元數(shù)據(jù)和數(shù)據(jù)分別使用redo和undo策略,針對應(yīng)用的選擇性并發(fā)檢查點機(jī)制減少了需保存的數(shù)據(jù)量,使得上層應(yīng)用的性能提高了近1倍.HMVFS是針對DRAM和NVM混合情況設(shè)計的多版本文件系統(tǒng)[14],通過輕量級的快照技術(shù)保護(hù)文件系統(tǒng)的一致性,使用內(nèi)存中的Stratified File System Tree (SFST)保護(hù)多個快照之間的一致性,相比BTRFS和NILFS2能有效減少快照所需的開銷.HINFS是面向NVM設(shè)計的高性能文件系統(tǒng)[15],給出了針對NVM主存的寫緩存機(jī)制、以及DRAM中索引與緩存行中位圖相結(jié)合的讀一致性機(jī)制,并設(shè)計了基于緩存貢獻(xiàn)模型的NVM主存寫機(jī)制.文獻(xiàn)[16]針對事務(wù)內(nèi)存設(shè)計了模糊持久性策略,通過基于日志的執(zhí)行和易失性的檢查點機(jī)制,減少了實現(xiàn)事務(wù)機(jī)制的開銷,能提高56.3%~143.7%的文件系統(tǒng)I/O性能.SIMFS[17]是一種能利用虛擬內(nèi)存管理機(jī)制的內(nèi)存文件系統(tǒng),每個被訪問的文件都擁有一個獨立的連續(xù)虛擬地址空間,數(shù)據(jù)地址空間的連續(xù)性可以支持高速的順序訪問,而且獨立空間的劃分方式可以避免文件訪問中的地址沖突問題,同時SIMFS還使用層級結(jié)構(gòu)的文件頁表(file page table)技術(shù)來組織文件數(shù)據(jù),從而保證了SIMFS可以使內(nèi)存帶寬接近飽和.文獻(xiàn)[18]在NOVA的基礎(chǔ)上設(shè)計了NOVA-Fortis,提高NVM文件系統(tǒng)容忍存儲器件錯誤和軟件系統(tǒng)bug的能力,相比現(xiàn)有沒有容錯功能的DAX文件系統(tǒng)能提高1.5倍的讀寫性能,相比基于塊的文件系統(tǒng)能提高3倍的讀寫性能.DevFS通過將文件系統(tǒng)嵌入到NVM存儲設(shè)備中,能提高NVM存儲設(shè)備2倍的吞吐率[19].

1.2 減少NVM系統(tǒng)軟件棧開銷的研究

文獻(xiàn)[20]分析了使用不同控制方式訪問PCM存儲設(shè)備時的效率,發(fā)現(xiàn)使用輪詢和同步讀寫策略、相比使用中斷和異步讀寫策略能有效減少訪問PCM存儲設(shè)備時的I/O軟件棧開銷.文獻(xiàn)[21]驗證了在讀PCM存儲設(shè)備中的數(shù)據(jù)時,使用輪詢能減少接口數(shù)據(jù)在用戶態(tài)與內(nèi)核態(tài)之間切換的開銷,提高讀性能.文獻(xiàn)[22]和文獻(xiàn)[23]設(shè)計了基于硬件的元數(shù)據(jù)和數(shù)據(jù)訪問路徑分離的方式,在用戶態(tài)直接訪問NVM存儲設(shè)備中的數(shù)據(jù),減少元數(shù)據(jù)的修改次數(shù),提高訪問NVM存儲設(shè)備的I/O性能.BPFS[6]拋棄塊設(shè)備接口,在用戶態(tài)使用load和store指令直接訪問DIMM接口的NVM存儲設(shè)備,構(gòu)建了一個全新的存儲系統(tǒng)I/O軟件棧.Mnemosyne是針對DIMM接口NVM存儲設(shè)備設(shè)計的輕量級訪問接口[10],實現(xiàn)了在用戶態(tài)空間中管理NVM存儲空間和保護(hù)文件系統(tǒng)一致性等問題.NVTM是一個面向NVM的事務(wù)訪問接口[24],將非易失存儲器直接映射到應(yīng)用程序的地址空間,允許易失和非易失數(shù)據(jù)結(jié)構(gòu)在程序中的無縫交互,從而在讀寫操作中避免操作系統(tǒng)的介入,提高數(shù)據(jù)訪問性能.NV-heaps是針對NVM存儲設(shè)備的一個輕量級的高性能對象存儲系統(tǒng)[25],減少存儲系統(tǒng)軟件棧的開銷,相比BerkeleyDB和Stasis能提高32倍和244倍的執(zhí)行速度.文獻(xiàn)[26]針對使用NVM存儲設(shè)備構(gòu)建SCM時,塊訪問接口無法附加優(yōu)化存儲系統(tǒng)性能信息的問題,設(shè)計了基于對象的SCM;文獻(xiàn)[27]針對SCM,設(shè)計了一種新型的控制器和相應(yīng)的函數(shù)庫,通過操作之間的解耦合,減少存儲系統(tǒng)軟件棧的開銷,并支持并發(fā)的原子操作;文獻(xiàn)[28]在分析不同事務(wù)之間關(guān)聯(lián)性的基礎(chǔ)上,設(shè)計了DCT減少事務(wù)提交順序之間的影響,并提高事務(wù)的執(zhí)行效率;文獻(xiàn)[29]在ISA的基礎(chǔ)上,從程序執(zhí)行路徑中移除日志操作,使用動態(tài)標(biāo)簽減少移動日志數(shù)據(jù)的開銷,借助硬件減少日志管理的開銷,從而高效的實現(xiàn)訪問NVM時操作的原子性;文獻(xiàn)[30]設(shè)計了Stampede開發(fā)套件,能提高應(yīng)用訪問硬事務(wù)內(nèi)存(HTM)和軟事務(wù)內(nèi)存(STM)時的性能,同時簡化了STM的設(shè)計,使得Blue Gene/Q 上64線程和Intel Westmere上32線程的性能分別提高了17.7倍和13.2倍.Path hashing能避免對NVM的額外寫操作,提高執(zhí)行速度,減少所使用的NVM存儲空間[31];文獻(xiàn)[32]針對PCM設(shè)計了基于頁的高效管理方式,適應(yīng)上層應(yīng)用的訪問方式,首先使用雙向鏈表管理PCM中的頁,再使用DRAM構(gòu)建了PCM頁的緩存并設(shè)計了基于進(jìn)入時間的淘汰算法,最后綜合頁遷移和交換信息優(yōu)化了PCM中頁的分配;文獻(xiàn)[33]混合使用SSD和磁盤設(shè)計了I-CASH,利用SSD提供高速隨機(jī)讀性能,利用處理器中多個計算核心的強(qiáng)大計算能力和磁盤構(gòu)建SSD中數(shù)據(jù)的日志,減少對SSD的隨機(jī)寫操作,在延長SSD使用壽命的同時,提高隨機(jī)寫的性能.

本文設(shè)計了具有非對稱接口的固態(tài)存儲系統(tǒng),將讀寫訪問請求進(jìn)行分離,并針對讀寫訪問請求的不同特性設(shè)計了相應(yīng)的管理算法和多粒度的固態(tài)存儲系統(tǒng)映射算法,從而能降低固態(tài)存儲系統(tǒng)寫放大問題,有效利用固態(tài)存儲系統(tǒng)內(nèi)部支持字節(jié)讀寫的特性,提高固態(tài)存儲系統(tǒng)的寫性能和延長其使用壽命.

2 具有非對稱接口固態(tài)存儲系統(tǒng)的結(jié)構(gòu)

數(shù)據(jù)塊是傳統(tǒng)磁盤的數(shù)據(jù)組織和管理單位,現(xiàn)有的存儲系統(tǒng)I/O軟件棧在訪問存儲設(shè)備時也是以數(shù)據(jù)塊為基本單位.這使得在訪問塊接口固態(tài)存儲系統(tǒng)時無法利用NVM存儲器件支持字節(jié)讀寫的特性,也沒有利用PCIe接口能動態(tài)調(diào)整數(shù)據(jù)傳輸粒度的優(yōu)勢.在執(zhí)行寫操作時,存在嚴(yán)重寫放大問題,同時還會嚴(yán)重影響固態(tài)存儲系統(tǒng)的使用壽命,降低了塊接口固態(tài)存儲系統(tǒng)的I/O性能.而讀操作不會影響固態(tài)存儲系統(tǒng)的壽命,較大粒度的讀操作也有利于實現(xiàn)數(shù)據(jù)的預(yù)取,提高讀操作的性能;同時較大的讀粒度也能減少讀操作的數(shù)量,降低存儲系統(tǒng)軟件棧的開銷.

我們給出具有非對稱接口固態(tài)存儲系統(tǒng)的結(jié)構(gòu),如圖1所示.包括位于驅(qū)動層中的動態(tài)粒度寫模塊和面向緩存的讀模塊,以及位于通用塊層中的多粒度映射模塊等主要部分,同時去掉了寫緩存,將存儲設(shè)備和文件系統(tǒng)之間的緩存僅僅作為讀緩存.多粒度映射模塊用于在文件系統(tǒng)寫固態(tài)存儲系統(tǒng)前獲得實際寫數(shù)據(jù)的地址和大小等信息,從而動態(tài)改變PCIe接口的傳輸量;訪問請求分析器實現(xiàn)對文件系統(tǒng)訪問請求的分析,將讀和寫訪問請求分解到對應(yīng)模塊執(zhí)行;動態(tài)粒度寫模塊依據(jù)實際寫數(shù)據(jù)的大小,在固態(tài)存儲系統(tǒng)內(nèi)部以字節(jié)為最小粒度執(zhí)行寫操作,避免寫放大問題;面向緩存讀模塊負(fù)責(zé)以數(shù)據(jù)塊為單位讀取NVM存儲器件中保存的數(shù)據(jù),并反饋給文件系統(tǒng).

Fig.1 Structure of new solid storage system with asymmetric interface圖1 具有非對稱接口固態(tài)存儲系統(tǒng)的結(jié)構(gòu)

3 最小化直接寫機(jī)制

固態(tài)存儲系統(tǒng)的寫操作會消耗存儲器件的使用壽命,因此如何減少寫入固體存儲系統(tǒng)的數(shù)據(jù)量是一個重要問題.

在現(xiàn)有的存儲系統(tǒng)寫機(jī)制中,文件系統(tǒng)首先使用塊粒度組織需要寫入固態(tài)存儲系統(tǒng)的數(shù)據(jù),再通過以塊為單位的映射表查找寫入存儲系統(tǒng)的地址,最后以塊為單位向存儲系統(tǒng)傳輸并寫入數(shù)據(jù).當(dāng)僅需要向固態(tài)存儲系統(tǒng)寫入少量數(shù)據(jù)時,存在較嚴(yán)重的寫放大問題,在影響固體存儲系統(tǒng)使用壽命的同時,還會因為無效寫操作影響寫性能.

我們從改變寫算法和映射算法兩方面入手,設(shè)計固態(tài)存儲系統(tǒng)的最小化直接寫機(jī)制.

3.1 動態(tài)粒度固態(tài)存儲系統(tǒng)寫算法

對文件系統(tǒng)的寫訪問請求,我們以其實際寫數(shù)據(jù)量為基礎(chǔ),動態(tài)調(diào)整寫入固態(tài)存儲系統(tǒng)的數(shù)據(jù)量,避免寫放大的問題.

定義write_pos∈N表示寫入數(shù)據(jù)的起始地址,當(dāng)write_pos=-1時表示不啟用動態(tài)粒度寫算法.

定義write_len∈N表示寫入數(shù)據(jù)的長度.

如圖2所示,當(dāng)寫入數(shù)據(jù)量小于系統(tǒng)數(shù)據(jù)塊大小時,首先在文件系統(tǒng)層中獲取寫入數(shù)據(jù)塊中的write_pos和write_len,根據(jù)write_len設(shè)置PCIe傳輸?shù)臄?shù)據(jù)量,僅將寫入數(shù)據(jù)、write_pos和write_len傳輸給固態(tài)存儲系統(tǒng),最后根據(jù)write_pos和write_len將數(shù)據(jù)包寫入NVM存儲器件的相應(yīng)位置.

如圖3所示,當(dāng)寫入數(shù)據(jù)量大于系統(tǒng)數(shù)據(jù)塊大小時,同樣首先在文件系統(tǒng)層中獲取寫入數(shù)據(jù)塊的地址和大小,接著按照最大為系統(tǒng)數(shù)據(jù)塊大小將寫入數(shù)據(jù)分成若干個數(shù)據(jù)包,并以實際大小構(gòu)建最后一個數(shù)據(jù)包;若數(shù)據(jù)包的大小等于數(shù)據(jù)塊,則設(shè)置write_pos=-1,采用現(xiàn)有塊為單位傳輸方式,并由固態(tài)存儲系統(tǒng)將數(shù)據(jù)包作為一個數(shù)據(jù)塊寫入設(shè)備;若數(shù)據(jù)包小于數(shù)據(jù)塊的大小,則從該數(shù)據(jù)包中獲取write_pos和write_len的信息,設(shè)置PCIe接口的傳輸數(shù)據(jù)量、并發(fā)送數(shù)據(jù)包、write_pos和write_len,最后固態(tài)存儲系統(tǒng)根據(jù)write_pos和write_len將數(shù)據(jù)包寫入相應(yīng)位置.

Fig.2 The write process with actually written data less than size of data block圖2 寫入數(shù)據(jù)量小于系統(tǒng)數(shù)據(jù)塊大小時的寫流程

Fig.3 The write process with actually written data larger than the size of data block圖3 寫入數(shù)據(jù)量大于系統(tǒng)數(shù)據(jù)塊大小時的寫流程

3.2 多粒度的固態(tài)存儲系統(tǒng)映射算法

文件系統(tǒng)首先將寫入固態(tài)存儲系統(tǒng)的數(shù)據(jù)首先保存在內(nèi)存中,通過內(nèi)存與存儲系統(tǒng)之間的映射表,確定寫入存儲系統(tǒng)的地址和長度后再寫入存儲系統(tǒng).現(xiàn)有的存儲系統(tǒng)映射表均是以數(shù)據(jù)塊為單位進(jìn)行組織和管理,這使得內(nèi)外存之間的數(shù)據(jù)交換只用以數(shù)據(jù)塊為單位.

我們設(shè)計多粒度的固態(tài)存儲系統(tǒng)映射表,在每個映射項內(nèi)增加dirty_pos∈N和dirty_len∈N,保存內(nèi)外存之間多粒度的映射信息.其中dirty_pos表示在該數(shù)據(jù)塊中需要更新到存儲系統(tǒng)數(shù)據(jù)區(qū)的起始地址,dirty_len表示該數(shù)據(jù)塊中需要更新到存儲系統(tǒng)數(shù)據(jù)區(qū)的長度.當(dāng)dirty_pos=-1時,表示該數(shù)據(jù)塊不采用多粒度映射算法.

使用S∈N和L∈N分別表示要寫入數(shù)據(jù)起始邏輯地址與長度,針對每次寫操作使用3步驟修改固態(tài)存儲系統(tǒng)映射表,實現(xiàn)多粒度的內(nèi)外存映射算法.

步驟1.依據(jù)S查找固態(tài)存儲系統(tǒng)映射表中所對應(yīng)的映射項,如S與該映射項的起始地址相同且L的值與數(shù)據(jù)塊大小相同,則將該映射項的dirty_pos=-1,否則將S對應(yīng)的物理地址保存到dirty_pos中.

步驟2.比較L的值是否超出了該映射項對應(yīng)邏輯塊的長度,如未超出,則使用L設(shè)置dirty_len的值,并將L的值清零;否則依據(jù)數(shù)據(jù)塊大小和dirty_pos計算出dirty_len的值,并更新S和L.

步驟3.如果L=0則結(jié)束整個操作,否則回到步驟1繼續(xù)做.

圖4給出了一個涉及3個映射項的寫操作中計算每個映射項dirty_pos和dirty_len的情況.

Fig.4 Calculating dirty_pos and dirty_len in mapping table between memory and PCIe NVM Device圖4 固態(tài)存儲系統(tǒng)映射表中計算dirty_pos和dirty_len

通過多粒度固態(tài)存儲系統(tǒng)映射算法,在每個固態(tài)存儲系統(tǒng)映射項中標(biāo)識實際需要寫入數(shù)據(jù)的起始地址和長度,使得動態(tài)粒度固態(tài)存儲系統(tǒng)寫算法能獲得實際需要寫入的數(shù)據(jù)塊信息,避免了文件系統(tǒng)與固態(tài)存儲系統(tǒng)之間只能以數(shù)據(jù)塊為單位交換數(shù)據(jù)的局限,為解決固態(tài)存儲系統(tǒng)的寫放大問題提供了支撐,從而提高固態(tài)存儲系統(tǒng)的使用壽命和寫性能.

4 基于塊的讀機(jī)制

讀操作不會影響固態(tài)存儲系統(tǒng)的壽命,同時較大的讀操作粒度能利用局部性原理實現(xiàn)數(shù)據(jù)的預(yù)取,通過構(gòu)建讀緩存,提高讀操作的性能;此外I/O操作中的系統(tǒng)軟件開銷已經(jīng)成為影響固態(tài)存儲系統(tǒng)讀寫性能的重要因素,同時NVM存儲器件的讀操作速度高于寫操作,因此在固態(tài)存儲系統(tǒng)的讀算法中減少讀次數(shù),能有效降低存儲系統(tǒng)軟件棧的開銷.

我們以數(shù)據(jù)塊為單位執(zhí)行固態(tài)存儲系統(tǒng)的讀操作,如圖5所示;首先由文件系統(tǒng)獲取讀操作所在的數(shù)據(jù)塊信息,并向固態(tài)存儲系統(tǒng)發(fā)出讀請求,固態(tài)存儲系統(tǒng)讀出數(shù)據(jù)后以塊為單位傳輸給文件系統(tǒng).

Fig.5 The process of read strategy based on block圖5 基于塊讀機(jī)制的流程

以數(shù)據(jù)塊作為讀操作的單位,能與現(xiàn)有文件系統(tǒng)和緩存中數(shù)據(jù)的管理粒度保持一致,避免數(shù)據(jù)管理粒度轉(zhuǎn)換等額外I/O棧軟件開銷,提高讀操作的效率;同時文件系統(tǒng)與固態(tài)存儲系統(tǒng)之間,每次的傳輸單位均一致,避免了頻繁修改PCIe接口的參數(shù),能減少了傳輸中的額外軟件開銷,提高讀操作的性能.

5 原型測試與分析

我們首先實現(xiàn)具有非對稱接口固態(tài)存儲系統(tǒng)的原型,再使用通用的測試工具進(jìn)行測試,并加載不同的文件系統(tǒng)進(jìn)行分析與比較.

5.1 原型系統(tǒng)的實現(xiàn)

我們在塊接口固態(tài)存儲系統(tǒng)PMBD[34]的基礎(chǔ)上實現(xiàn)APMSS的原型.在模擬NVM存儲器件時,使用PMBD的缺省配置,在DRAM的基礎(chǔ)上增加85 ns的讀延遲和500 ns的寫延遲模擬NVM介質(zhì);同時修改Linux內(nèi)核,在內(nèi)核地址的尾部預(yù)留10 GB內(nèi)核空間作為PMBD的存儲地址空間.

此外我們修改Linux內(nèi)核中通用設(shè)備層管理內(nèi)外存映射結(jié)構(gòu)buffer_head,增加dirty_pos和dirty_len兩個指針用于保存需要實際需要寫回存儲系統(tǒng)的數(shù)據(jù)位置和長度信息,并修改內(nèi)外存映射的源代碼實現(xiàn)多粒度的固態(tài)存儲系統(tǒng)映射算法;再修改Linux內(nèi)核中與設(shè)備驅(qū)動交互的bio結(jié)構(gòu),增加write_pos和write_len保存從buffer_head結(jié)構(gòu)獲得的dirty_pos和dirty_len信息;最后修改PMBD的源代碼,將實際寫回數(shù)據(jù)的位置和長度信息傳遞到給固態(tài)存儲設(shè)備,增加動態(tài)粒度寫算法、基于數(shù)據(jù)塊的讀算法和讀寫請求區(qū)分器,從而在執(zhí)行寫操作時利用NVM存儲器件字節(jié)尋址特性,僅寫入實際修改的數(shù)據(jù);從而構(gòu)建具有非對稱接口固態(tài)存儲系統(tǒng)的原型系統(tǒng)APMSS.

使用存儲系統(tǒng)通用測試工具Fio和Filebench測試APMSS原型的寫性能,測試環(huán)境的配置如表1所示.在測試時,所有的Ext4均使用DAX方式.

Table 1 The Configuration of Testing Environment表1 測試環(huán)境的配置

5.2 讀寫不同大小文件的性能

首先使用Ext4格式化APMSS,再應(yīng)用Fio中Linux異步I/O引擎libaio,調(diào)整文件的大小分別為8 KB,32 KB,128 KB和512 KB,測試APMSS順序讀寫3萬個文件時的I/O性能,訪問塊大小設(shè)置為4 KB;并在PMBD上Ext4和Ext2執(zhí)行相同測試,進(jìn)行對比和分析.測試結(jié)果如圖6和圖7所示.

Fig.6 Sequential write performance with different size files圖6 順序?qū)懶阅艿臏y試

Fig.7 Sequential read performance with different size files圖7 順序讀性能的測試

圖6是順序?qū)懶阅艿臏y試結(jié)果,從圖6中可以看出:

1) 采用APMSS能有效提高Ext4的寫性能.當(dāng)文件大小為128 KB時,相比PMBD寫性能提高了14%;同時還改變了Ext4寫性能低于Ext2的情況,相比Ext2 on PMBD寫性能提高了9.6%.這說明APMSS能針對固態(tài)存儲系統(tǒng)的特性,使用動態(tài)粒度寫算法通過僅僅寫入實際修改的數(shù)據(jù),避免寫放大問題,提高寫性能.

2) 當(dāng)單個文件大小增加后,寫相同數(shù)據(jù)量所需訪問文件的次數(shù)不斷下降,減少了讀寫文件元數(shù)據(jù)所需的時間開銷,使得寫速度不斷提高;在單個文件從8 KB增加到512 KB后,APMSS的寫性能提高了9倍多,而PMBD上的Ext4和Ext2僅增加了8.2倍和7.4倍,這表明APMSS相比現(xiàn)有塊接口固態(tài)存儲系統(tǒng)具有寫性能的優(yōu)勢,同時能利用APMSS最小化寫機(jī)制和內(nèi)部支持字節(jié)寫的特性減少讀寫文件元數(shù)據(jù)所需的時間開銷.

3) 在改變所寫文件大小時,APMSS上的Ext4的寫性能始終高于PMBD上的Ext4,同時所提高的寫性能絕對值隨著文件大小的增加而不斷提高,這和2)中類似,是由于減少了管理文件元數(shù)據(jù)的時間開銷,這也進(jìn)一步表明APMSS最小化寫機(jī)制的有效性.在所寫文件的大小從8 KB增加到512 KB時,寫性能提高的速度呈現(xiàn)先增加后下降的趨勢,在文件大小為128 KB時達(dá)到最大值,這是由于文件元數(shù)據(jù)讀寫速度不斷提高并逐步接近文件系統(tǒng)處理文件元數(shù)據(jù)速度,消弱了文件寫性能的提高幅度,這也表明APMSS能減輕存儲系統(tǒng)所導(dǎo)致的計算機(jī)系統(tǒng)性能瓶頸.

圖7給出了順序讀的測試結(jié)果,從圖7中可以看出APMSS和PMBD上的Ext4具有相同的讀性能,這主要由于APMSS能利用非對稱接口區(qū)分讀寫操作,使用以數(shù)據(jù)塊為粒度的方法處理讀操作,避免在提高讀寫操作靈活性的同時對讀性能產(chǎn)生影響,驗證了APMSS具有良好的適應(yīng)能力;同時可以發(fā)現(xiàn)對讀寫訪問請求進(jìn)行區(qū)分、采用不同的管理機(jī)制所可能增加的額外管理開銷非常小,沒有發(fā)現(xiàn)對APMSS的讀性能照成影響.

5.3 改變讀寫文件大小時的訪問請求處理效率

使用3.2節(jié)中相同的測試工具和設(shè)置,測試APMSS,PMBD上Ext4和Ext2處理訪問請求的速度,測試結(jié)果如表2和表3所示.

Table 2 The IOPS of Sequential Write表2 順序?qū)憰r的訪問請求處理速度(IOPS)

Table 3 The IOPS of Sequential Read表3 順序讀時的訪問請求處理速度(IOPS)

從表2和表3的測試結(jié)果中可以看出:

1) 讀寫訪問請求處理速度的測試結(jié)果與I/O性能的測試結(jié)果類似.

2) 在執(zhí)行寫操作時,APMSS上Ext4處理寫訪問請求的速度高于PMBD上Ext4和Ext2,特別是針對PMBD上Ext4具有較大的優(yōu)勢,隨著文件大小的增加,APMSS上Ext4相比PMBD上Ext4所提高的IOPS越來越顯著,這驗證了APMSS最小化直接寫機(jī)制能有效避免寫放大的問題.

3) 在執(zhí)行讀操作時,APMSS和PMBD上Ext4處理訪問請求的速度相同,這驗證了APMSS具有良好的適應(yīng)能力,能區(qū)分讀寫操作,使用基于數(shù)據(jù)塊的方法完成讀訪問請求,有利于發(fā)揮固態(tài)存儲系統(tǒng)中讀緩存的作用;同時也表明區(qū)分讀寫訪問請求分別使用不同的管理策略可能增加的額外管理開銷非常小,對APMSS的執(zhí)行讀操作時的IOPS沒有影響;因此這些結(jié)果表明,APMSS在提高寫訪問請求處理速度的同時保持讀訪問請求的處理效率.

5.4 改變訪問塊大小時的IO性能

同樣使用Ext4格式化APMSS,應(yīng)用Fio中Linux異步I/O引擎libaio,改變文件系統(tǒng)中訪問塊的大小分別為4 KB,8 KB,16 KB和32 KB,測試APMSS順序讀寫3萬個512 KB文件時的I/O性能;并在PMBD上Ext4和Ext2執(zhí)行相同測試,進(jìn)行對比和分析.測試結(jié)果如圖8和圖9所示.

Fig.8 Sequential write performance with different block sizes圖8 設(shè)置不同大小訪問塊時的順序?qū)懶阅?/p>

從圖8中可以發(fā)現(xiàn):

1) 隨著訪問塊的增加,APMSS相比PMBD提高寫性能的效果越來越明顯.

2) 當(dāng)訪問塊大小為4 KB時,APMSS上Ext4相比PMBD上Ext4和Ext2能提高2%~4%的寫性能.

3) 當(dāng)訪問塊大小為32 KB時,APMSS上Ext4的寫性能相比PMBD上Ext4提高了22%、相比PMBD上Ext2提高了20%.

4) 綜合2)和3)可以發(fā)現(xiàn),當(dāng)訪問塊增大后,單個訪問塊內(nèi)實際需要寫入固態(tài)存儲系統(tǒng)數(shù)據(jù)所占的比重也隨之下降,使得PMBD上的寫放大問題越來越嚴(yán)重,對寫性能的影響也就越明顯;但同時APMSS中最小化直接寫機(jī)制的效果也就越顯著,使得APMSS在訪問塊較大時寫性能的優(yōu)勢更加顯著.

5) 隨著訪問塊從4 KB增加到32 KB,寫3萬個512 KB文件所需寫訪問請求的數(shù)量逐漸下降,減少了I/O軟件棧的開銷,使得APMSS的寫性能提高了約1倍;而同時PMBD上的Ext4和Ext2僅提高了70%;這進(jìn)一步說明APMSS相比現(xiàn)有的塊接口固態(tài)存儲系統(tǒng)具有寫性能的優(yōu)勢.

此外使用相同的配置,改變文件系統(tǒng)中訪問塊的大小,測試順序讀3萬個512 KB文件的性能,結(jié)果如圖9所示:

Fig.9 Sequential read performance with different block sizes圖9 設(shè)置不同大小訪問塊時的順序讀性能

從圖9中的結(jié)果可知,APMSS和PMBD上的Ext4具有相同的讀性能,這驗證了APMSS在提高寫性能的同時,不會因為需要區(qū)分讀寫操作而影響其讀性能.

5.5 應(yīng)用綜合應(yīng)用負(fù)載時的測試

同樣使用Ext4格式化APMSS,應(yīng)用Filebench來模擬應(yīng)用服務(wù)器的訪問情況,選擇Copyfile,Webserver和Fileserver三種類型負(fù)載測試APMSS的I/O性能,設(shè)置文件大小為32 KB、文件數(shù)量為5萬個、訪問塊大小為4 KB,與PMBD上的Ext4進(jìn)行比較,測試結(jié)果如圖10所示.

Fig.10 The I/O performance with different real workload圖10 不同真實負(fù)載下的I/O性能

Copyfile負(fù)載是模擬用戶復(fù)制文件目錄樹的行為,主要測試系統(tǒng)持續(xù)讀寫性能.在應(yīng)用Copyfile負(fù)載時,從測試結(jié)果可以發(fā)現(xiàn)APMSS上的Ext4能提高6.37%的I/O性能.這主要因為APMSS優(yōu)化了固態(tài)存儲系統(tǒng)的寫操作,按照實際數(shù)據(jù)量大小以字節(jié)為單位寫入固態(tài)存儲系統(tǒng),避免了不必要的寫操作,提高了其上Ext4文件系統(tǒng)的寫性能.

Webserver負(fù)載是模擬用戶訪問Web服務(wù)器的負(fù)載,主要是文件的讀操作.在應(yīng)用Webserver負(fù)載時,APMSS與PMBD上的Ext4的I/O性能基本相同.這主要由于APMSS能利用非對稱接口區(qū)分讀寫操作,在使用最小化直接寫機(jī)制的同時,仍然使用基于數(shù)據(jù)塊的方式完成讀訪問請求,從而保持了較高的讀性能,驗證了APMSS具有良好的適應(yīng)性.

Fileserver負(fù)載是模擬文件服務(wù)器中文件的共享、讀寫操作等情況,在應(yīng)用Fileserver負(fù)載時,APMSS上Ext4的I/O性能相比PMBD上的Ext4提高了28.4%.這主要是由于Fileserver負(fù)載中的每個訪問請求均包含一系列文件的open,write,append,read,close等操作,使得APMSS能發(fā)揮最小化直接寫機(jī)制在處理數(shù)據(jù)量較小的文件元數(shù)據(jù)讀寫時的優(yōu)勢,有效解決寫放大問題,提高了應(yīng)用的性能.

6 總 結(jié)

使用NVM存儲器件改造現(xiàn)有PCIe固態(tài)存儲設(shè)備是構(gòu)建新型高速固態(tài)存儲系統(tǒng)的重要手段.固態(tài)存儲系統(tǒng)現(xiàn)有塊訪問方式有很大的局限,存在寫放大和無法利用NVM存儲器件支持字節(jié)讀寫特性等問題,但同時也有利于獲得較高的態(tài)存儲設(shè)備讀性能.我們針對固態(tài)存儲系統(tǒng)設(shè)計了最小化直接寫機(jī)制和基于塊的讀機(jī)制,區(qū)分讀、寫訪問操作;在處理寫訪問操作時,僅將修改的數(shù)據(jù)寫入固態(tài)存儲系統(tǒng),避免寫放大問題,提高寫性能;同時仍然以塊為單位完成讀訪問操作,利用讀緩存獲得較高的讀性能.最后我們在開源的PMBD的基礎(chǔ)上,實現(xiàn)了具有非對稱接口新型固態(tài)存儲設(shè)系統(tǒng)的原型APMSS,使用存儲系統(tǒng)的通用測試工具Fio和Filebench進(jìn)行測試,并于現(xiàn)有基于NVM的塊接口存儲系統(tǒng)PMBD上的不同文件系統(tǒng)進(jìn)行比較,結(jié)果表明APMSS上的Ext4相比PMBD上的Ext2和Ext4能提高9.6%~29.8%的寫性能,從而驗證了所設(shè)計的算法能有效提高固態(tài)存儲系統(tǒng)的I/O性能.

當(dāng)前我們還未利用固態(tài)存儲系統(tǒng)內(nèi)部的并行性優(yōu)化讀寫操作的執(zhí)行效率,下一步我們將針對固態(tài)存儲系統(tǒng)的內(nèi)部特性,進(jìn)一步優(yōu)化讀寫操作的性能.

猜你喜歡
存儲設(shè)備存儲系統(tǒng)固態(tài)
固態(tài)Marx發(fā)生器均流技術(shù)研究
Sn摻雜石榴石型Li7La3Zr2O12固態(tài)電解質(zhì)的制備
透明陶瓷在固態(tài)照明中的應(yīng)用進(jìn)展
分布式存儲系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
哈爾濱軸承(2020年2期)2020-11-06 09:22:36
天河超算存儲系統(tǒng)在美創(chuàng)佳績
Windows 7下USB存儲設(shè)備接入痕跡的證據(jù)提取
基于Flash芯片的新型存儲設(shè)備數(shù)據(jù)恢復(fù)技術(shù)研究
華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲系統(tǒng)
寬禁帶固態(tài)功放在導(dǎo)航衛(wèi)星中的應(yīng)用
一種基于STM32的具有斷電保護(hù)機(jī)制的采集存儲系統(tǒng)設(shè)計
额尔古纳市| 忻州市| 正定县| 黔南| 耿马| 鲁甸县| 嘉荫县| 会理县| 亳州市| 绥江县| 新民市| 宁明县| 门源| 来安县| 通渭县| 阿合奇县| 固始县| 梧州市| 托里县| 馆陶县| 平顺县| 阿合奇县| 鄯善县| 额尔古纳市| 饶河县| 上虞市| 和顺县| 渭源县| 大新县| 方正县| 大姚县| 泰宁县| 库尔勒市| 常德市| 石家庄市| 苗栗市| 冕宁县| 中宁县| 怀柔区| 镇赉县| 司法|