• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2018-09-21 03:26:44牛德姣賀慶建詹永照
      關(guān)鍵詞:存儲(chǔ)設(shè)備存儲(chǔ)系統(tǒng)固態(tài)

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

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

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

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

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

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

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

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

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

      1 相關(guān)工作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      如圖3所示,當(dāng)寫入數(shù)據(jù)量大于系統(tǒng)數(shù)據(jù)塊大小時(shí),同樣首先在文件系統(tǒng)層中獲取寫入數(shù)據(jù)塊的地址和大小,接著按照最大為系統(tǒng)數(shù)據(jù)塊大小將寫入數(shù)據(jù)分成若干個(gè)數(shù)據(jù)包,并以實(shí)際大小構(gòu)建最后一個(gè)數(shù)據(jù)包;若數(shù)據(jù)包的大小等于數(shù)據(jù)塊,則設(shè)置write_pos=-1,采用現(xiàn)有塊為單位傳輸方式,并由固態(tài)存儲(chǔ)系統(tǒng)將數(shù)據(jù)包作為一個(gè)數(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)存儲(chǔ)系統(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ù)塊大小時(shí)的寫流程

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

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

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

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

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

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

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

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

      圖4給出了一個(gè)涉及3個(gè)映射項(xiàng)的寫操作中計(jì)算每個(gè)映射項(xiàng)dirty_pos和dirty_len的情況.

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

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

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

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

      我們以數(shù)據(jù)塊為單位執(zhí)行固態(tài)存儲(chǔ)系統(tǒng)的讀操作,如圖5所示;首先由文件系統(tǒng)獲取讀操作所在的數(shù)據(jù)塊信息,并向固態(tài)存儲(chǔ)系統(tǒng)發(fā)出讀請(qǐng)求,固態(tài)存儲(chǔ)系統(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棧軟件開銷,提高讀操作的效率;同時(shí)文件系統(tǒng)與固態(tài)存儲(chǔ)系統(tǒng)之間,每次的傳輸單位均一致,避免了頻繁修改PCIe接口的參數(shù),能減少了傳輸中的額外軟件開銷,提高讀操作的性能.

      5 原型測試與分析

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

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

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

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

      使用存儲(chǔ)系統(tǒng)通用測試工具Fio和Filebench測試APMSS原型的寫性能,測試環(huán)境的配置如表1所示.在測試時(shí),所有的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萬個(gè)文件時(shí)的I/O性能,訪問塊大小設(shè)置為4 KB;并在PMBD上Ext4和Ext2執(zhí)行相同測試,進(jìn)行對(duì)比和分析.測試結(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時(shí),相比PMBD寫性能提高了14%;同時(shí)還改變了Ext4寫性能低于Ext2的情況,相比Ext2 on PMBD寫性能提高了9.6%.這說明APMSS能針對(duì)固態(tài)存儲(chǔ)系統(tǒng)的特性,使用動(dòng)態(tài)粒度寫算法通過僅僅寫入實(shí)際修改的數(shù)據(jù),避免寫放大問題,提高寫性能.

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

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

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

      5.3 改變讀寫文件大小時(shí)的訪問請(qǐng)求處理效率

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

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

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

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

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

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

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

      5.4 改變?cè)L問塊大小時(shí)的IO性能

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

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

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

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

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

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

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

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

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

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

      從圖9中的結(jié)果可知,APMSS和PMBD上的Ext4具有相同的讀性能,這驗(yàn)證了APMSS在提高寫性能的同時(shí),不會(huì)因?yàn)樾枰獏^(qū)分讀寫操作而影響其讀性能.

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

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

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

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

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

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

      6 總 結(jié)

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

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

      猜你喜歡
      存儲(chǔ)設(shè)備存儲(chǔ)系統(tǒng)固態(tài)
      固態(tài)Marx發(fā)生器均流技術(shù)研究
      Sn摻雜石榴石型Li7La3Zr2O12固態(tài)電解質(zhì)的制備
      透明陶瓷在固態(tài)照明中的應(yīng)用進(jìn)展
      分布式存儲(chǔ)系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
      哈爾濱軸承(2020年2期)2020-11-06 09:22:36
      天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績
      Windows 7下USB存儲(chǔ)設(shè)備接入痕跡的證據(jù)提取
      基于Flash芯片的新型存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)技術(shù)研究
      華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲(chǔ)系統(tǒng)
      寬禁帶固態(tài)功放在導(dǎo)航衛(wèi)星中的應(yīng)用
      一種基于STM32的具有斷電保護(hù)機(jī)制的采集存儲(chǔ)系統(tǒng)設(shè)計(jì)
      阿图什市| 敦化市| 墨玉县| 永年县| 云梦县| 临潭县| 景东| 陵川县| 弥勒县| 若尔盖县| 铜川市| 定远县| 偏关县| 莱西市| 乡城县| 宁阳县| 赣州市| 商水县| 门头沟区| 桐乡市| 札达县| 韶山市| 砀山县| 瑞昌市| 廉江市| 安义县| 班玛县| 布拖县| 大邑县| 茂名市| 宿迁市| 海盐县| 扎赉特旗| 怀来县| 察隅县| 富平县| 郴州市| 凤凰县| 红安县| 湘潭县| 宝丰县|