蔡 濤 王 杰 牛德姣 劉佩瑤 陳福麗
(江蘇大學(xué)計(jì)算機(jī)科學(xué)與通信工程學(xué)院 江蘇鎮(zhèn)江 212013)
存儲(chǔ)系統(tǒng)是當(dāng)前計(jì)算機(jī)系統(tǒng)的瓶頸,近年來出現(xiàn)了一系列新興的非易失性存儲(chǔ)器[1-5](non-volatile memory, NVM),如3D-Xpoint,PCM(phase change memory),Battery-backed NVDIMMS,F(xiàn)eRAM(ferroe-lectric RAM)等,這些NVM存儲(chǔ)設(shè)備具有接近內(nèi)存(dynamic RAM, DRAM)的讀寫速度和支持字節(jié)尋址等特性,成為解決存儲(chǔ)系統(tǒng)性能瓶頸的重要方法,但這些特性也給現(xiàn)有的存儲(chǔ)系統(tǒng)管理方法帶來了極大的挑戰(zhàn).
由于傳統(tǒng)存儲(chǔ)設(shè)備缺乏處理能力,現(xiàn)有存儲(chǔ)系統(tǒng)需要依賴文件系統(tǒng)利用主機(jī)CPU管理訪問請(qǐng)求,并使用鎖機(jī)制實(shí)現(xiàn)訪問請(qǐng)求之間的互斥;但文件系統(tǒng)無法獲得存儲(chǔ)設(shè)備和數(shù)據(jù)分布的特性,缺乏針對(duì)NVM存儲(chǔ)設(shè)備的特性的優(yōu)化機(jī)制;文件系統(tǒng)的鎖機(jī)制是以文件為管理單位,這限制了多個(gè)訪問請(qǐng)求的并發(fā)執(zhí)行,無法利用NVM存儲(chǔ)設(shè)備內(nèi)部多個(gè)通道的并發(fā)執(zhí)行能力;同時(shí)使用鎖機(jī)制,需要將相應(yīng)的進(jìn)程在阻塞和就緒狀態(tài)之間進(jìn)行調(diào)度,所需的大量時(shí)間開銷嚴(yán)重影響了NVM存儲(chǔ)系統(tǒng)的IO性能;當(dāng)前NVM存儲(chǔ)設(shè)備還是使用PCIe(peripheral component interconnect express)或SAS(serial attached SCSI)等接口,這些相對(duì)NVM存儲(chǔ)器件較慢的接口是影響NVM存儲(chǔ)設(shè)備IO性能的瓶頸,但現(xiàn)有存儲(chǔ)系統(tǒng)只能借助主機(jī)CPU完成訪問請(qǐng)求的管理任務(wù),并通過存儲(chǔ)設(shè)備接口獲取數(shù)據(jù)狀態(tài),這需要在存儲(chǔ)設(shè)備和主機(jī)之間頻繁地傳輸數(shù)據(jù),從而進(jìn)一步加重了存儲(chǔ)設(shè)備接口對(duì)NVM存儲(chǔ)系統(tǒng)IO性能的影響,同時(shí)還給主機(jī)CPU帶來了很大的計(jì)算壓力.總的來說,NVM存儲(chǔ)設(shè)備接近DRAM的數(shù)據(jù)讀寫速度使得現(xiàn)有IO棧(IO stack)成為影響NVM存儲(chǔ)系統(tǒng)IO性能的重要因素,相關(guān)研究[6]表明在用于NVM存儲(chǔ)系統(tǒng)時(shí)IO系統(tǒng)軟件的開銷占總開銷的94%以上;而NVM存儲(chǔ)設(shè)備具有較強(qiáng)的嵌入式處理能力,具備自主完成管理訪問請(qǐng)求的基礎(chǔ),同時(shí)內(nèi)部擁有多個(gè)可以并發(fā)的訪問通道,這給增加執(zhí)行訪問請(qǐng)求并發(fā)度、提高NVM存儲(chǔ)系統(tǒng)吞吐率提供了良好的基礎(chǔ),但現(xiàn)有存儲(chǔ)系統(tǒng)還缺乏相應(yīng)的優(yōu)化機(jī)制.
首先給出了當(dāng)前NVM存儲(chǔ)系統(tǒng)相關(guān)的研究,分析了提高存儲(chǔ)系統(tǒng)吞吐率的相關(guān)策略.接著分析存儲(chǔ)系統(tǒng)中現(xiàn)有基于鎖的訪問請(qǐng)求管理機(jī)制,在此基礎(chǔ)上設(shè)計(jì)了基于沖突檢測的高吞吐NVM存儲(chǔ)系統(tǒng)(HTPM).并在開源的NVM存儲(chǔ)設(shè)備模擬器上實(shí)現(xiàn)HTPM的原型,使用Filebench和Fio等通用測試工具對(duì)HTPM的吞吐率和IO性能進(jìn)行測試與分析,驗(yàn)證HTPM的有效性.
本文的主要貢獻(xiàn)如下:
1) 將存儲(chǔ)系統(tǒng)訪問請(qǐng)求管理功能從文件系統(tǒng)遷移到NVM存儲(chǔ)設(shè)備中,能利用NVM存儲(chǔ)設(shè)備支持字節(jié)訪問和支持多通道讀寫等特性,縮小執(zhí)行不同訪問請(qǐng)求時(shí)需要互斥的數(shù)據(jù)塊粒度,提高訪問請(qǐng)求的并發(fā)執(zhí)行能力.
2) 使用基于存儲(chǔ)設(shè)備的沖突檢測方法代替基于鎖的文件系統(tǒng)訪問請(qǐng)求互斥機(jī)制,能有效增加存儲(chǔ)系統(tǒng)執(zhí)行訪問請(qǐng)求的并發(fā)度,提高存儲(chǔ)系統(tǒng)的吞吐率.
3) 利用NVM存儲(chǔ)設(shè)備的嵌入式處理能力,自主管理訪問請(qǐng)求,減少NVM存儲(chǔ)設(shè)備和主機(jī)之間傳輸?shù)臄?shù)據(jù)量,緩解NVM存儲(chǔ)設(shè)備接口對(duì)存儲(chǔ)系統(tǒng)IO性能的影響,減輕主機(jī)CPU的負(fù)擔(dān).
4) 利用NVM存儲(chǔ)設(shè)備內(nèi)具有能并行訪問的多個(gè)通道,增加執(zhí)行訪問請(qǐng)求的并發(fā)度,提高NVM存儲(chǔ)系統(tǒng)的吞吐率.
5) 實(shí)現(xiàn)基于沖突檢測的高并發(fā)NVM存儲(chǔ)系統(tǒng)的原型HTPM,使用Filebench中的Webserver,Varmail,F(xiàn)ileserver負(fù)載測試吞吐率,使用Fio測試順序讀寫和隨機(jī)讀寫的IO性能,結(jié)果表明HTPM與PMEM相比最高能提高31.9%的IOPS值和3.2%~21.4%的IO性能.
VM存儲(chǔ)設(shè)備具有低延遲、支持字節(jié)讀寫和接近內(nèi)存的傳輸速度等特性,研究者們針對(duì)這些特性開展了大量的研究.下面分別從NVM的新型文件系統(tǒng)和構(gòu)建NVM與DRAM的混合內(nèi)存2方面介紹主要的研究工作.
Dulloor等人[7]設(shè)計(jì)了一種新型的輕量級(jí)POSIX(portable operating system interface of UNIX)文件系統(tǒng)PMFS,利用NVM存儲(chǔ)設(shè)備的字節(jié)尋址的能力來減少IO棧開銷,使得應(yīng)用能直接訪問NVM存儲(chǔ)設(shè)備.此外,PMFS還利用處理器的分頁和內(nèi)存排序功能減少日志記錄的粒度并支持更大的頁面,在保證一致性的同時(shí)提高內(nèi)存映射和訪問的效率.Ou等人[8]提出的HiNFS使用寫緩沖策略隱藏NVM較長的寫延遲,并直接從DRAM和NVM存儲(chǔ)設(shè)備讀取文件數(shù)據(jù),避免關(guān)鍵路徑中雙重復(fù)制的開銷.Sha等人[9]提出一種基于“文件虛擬地址空間”的新型文件系統(tǒng)SIMFS,充分利用了在文件訪問路徑上內(nèi)存映射硬件.SIMFS將打開的文件地址空間嵌入到進(jìn)程的地址空間中,將文件的處理轉(zhuǎn)交給存儲(chǔ)器映射硬件.通過這樣的方法極大地提高了文件系統(tǒng)的吞吐性能.NOVA文件系統(tǒng)[10-11]通過優(yōu)化日志提高并發(fā)度.它為每一個(gè)文件提供一個(gè)單獨(dú)的日志,在正常操作和恢復(fù)期間能有效提高執(zhí)行訪問請(qǐng)求的并發(fā)度;同時(shí)利用NVM存儲(chǔ)設(shè)備支持字節(jié)讀寫的特性,以鏈表的形式存儲(chǔ)日志,避免了在內(nèi)存中需要連續(xù)空間存儲(chǔ)日志;對(duì)于那些涉及到多個(gè)inode的操作,NOVA使用輕量級(jí)的日志來減少時(shí)間和空間開銷.總的來說,NOVA能有效利用NVM存儲(chǔ)設(shè)備的特性提高日志結(jié)構(gòu)文件系統(tǒng)的吞吐率和減少垃圾的開銷.XPMFS[12]提出了一種NVM存儲(chǔ)設(shè)備的自管理算法,利用NVM存儲(chǔ)設(shè)備中的嵌入式處理器完成存儲(chǔ)系統(tǒng)的管理,減少NVM存儲(chǔ)設(shè)備與CPU之間的傳輸,提高元數(shù)據(jù)管理效率并降低NVM存儲(chǔ)設(shè)備的寫放大問題.Zeng和Sha等人[13]設(shè)計(jì)了一種適用于NVM和塊設(shè)備的混合型文件系統(tǒng)NBFS,將單個(gè)文件的數(shù)據(jù)頁分發(fā)到NUMA(non uniform memory access architecture)架構(gòu)和多個(gè)塊設(shè)備的多個(gè)存儲(chǔ)節(jié)點(diǎn),還設(shè)計(jì)了一種基于數(shù)據(jù)訪問的數(shù)據(jù)遷移機(jī)制和優(yōu)化了塊設(shè)備的資源池,減少了額外的存儲(chǔ)開銷.Kannan等人[14]設(shè)計(jì)的DevFS是一種用戶級(jí)直接訪問的文件系統(tǒng),使用按需分配內(nèi)存的機(jī)制,與文件相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)如IO隊(duì)列和日志等在文件打開或創(chuàng)建時(shí)才分配,直到文件刪除時(shí)才被釋放;使用動(dòng)態(tài)分配的文件IO隊(duì)列和內(nèi)存日志,能根據(jù)需求動(dòng)態(tài)調(diào)整大小.Zheng等人[15]提出的Ziggurat能根據(jù)應(yīng)用程序訪問模式、寫入大小以及應(yīng)用程序在寫入完成之前停止的可能性來管理對(duì)NVM,DRAM或磁盤的寫操作.
NVM存儲(chǔ)設(shè)備具有接近內(nèi)存的讀寫速度,研究者考慮將NVM存儲(chǔ)設(shè)備和DRAM設(shè)備一起構(gòu)建混合緩存,來解決DRAM容量不足的問題.
Fan等人[16]提出了基于NVM和DRAM的協(xié)作混合高速緩存策略Hibachi,分離讀緩存和寫緩存,設(shè)計(jì)不同的方式分別管理以提高緩存的命中率;同時(shí),Hibachi能夠動(dòng)態(tài)地調(diào)整clean緩存和dirty緩存的大小,來適應(yīng)不同的運(yùn)行負(fù)載;此外,Hibachi能夠?qū)㈦S機(jī)寫轉(zhuǎn)化為順序?qū)憗硖岣叽鎯?chǔ)系統(tǒng)的吞吐量.Zuo等人[17]設(shè)計(jì)了一種基于位置共享的散列沖突解決方法,提出了一種寫入友好的路徑散列算法來減少NVM存儲(chǔ)設(shè)備的額外寫入操作.Liu等人[18]提出一種硬件與軟件協(xié)作的緩存機(jī)制HSCC,通過維護(hù)NVM到DRAM的地址映射,以及對(duì)頁表和TLB的擴(kuò)展來跟蹤NVM頁面的訪問計(jì)數(shù);從而簡化了硬件的設(shè)計(jì),并為優(yōu)化軟件層中的緩存提供了支撐.Sha等人[19]提出虛擬線性可尋址桶(VLAB)的索引方法,通過建立連續(xù)的虛擬地址空間來提高地址查找的效率.Qureshi等人[20]提出了一種基于PCM的混合主存架構(gòu),同時(shí)具有DRAM低延遲和PCM大容量等優(yōu)勢;此外還設(shè)計(jì)了減少混合內(nèi)存系統(tǒng)寫入操作的方法,能夠顯著延長混合主存中PCM的壽命.文獻(xiàn)[21]設(shè)計(jì)了NVMain2.0,使用NVM和DRAM構(gòu)建混合型存儲(chǔ)系統(tǒng),具有用戶接口靈活、IO性能顯著提高和刷新粒度小等特點(diǎn).Son等人[22]提出了一種日志文件系統(tǒng)中高性能的事務(wù)機(jī)制,通過分析Ext4JDB2事務(wù)傳輸過程中的IO操作以及加鎖機(jī)制,采用lock-free的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)了以協(xié)作方式并發(fā)執(zhí)行IO操作的方法,提高讀寫數(shù)據(jù)的效率;但該方法主要從應(yīng)用層和文件系統(tǒng)層優(yōu)化鎖機(jī)制,無法利用NVM存儲(chǔ)設(shè)備的嵌入式處理能力,也不能減少NVM存儲(chǔ)設(shè)備和主機(jī)之間需要傳輸?shù)臄?shù)據(jù)量.Dulloor等人[23]設(shè)計(jì)了一種基于DRAMNVM的異構(gòu)存儲(chǔ)架構(gòu),使得開發(fā)人員能夠借助其提供的庫快速優(yōu)化存儲(chǔ)系統(tǒng).陳吉等人[24]設(shè)計(jì)了一種層次化的NVM和DRAM的異構(gòu)內(nèi)存系統(tǒng)SSLDC,該系統(tǒng)能在層次化混合內(nèi)存上支持大頁.SSLDC使用直接映射的方式將NVM映射到DRAM上,并以4 KB的粒度來對(duì)數(shù)據(jù)快進(jìn)行管理.與此同時(shí),SSLDC還實(shí)現(xiàn)了一種DRAM的數(shù)據(jù)過濾機(jī)制來降低了粗粒度打來的內(nèi)存帶寬的壓力.
當(dāng)前的研究雖然能夠提高NVM存儲(chǔ)系統(tǒng)的性能,但未改變存儲(chǔ)系統(tǒng)中串行的訪問請(qǐng)求方式,無法利用NVM存儲(chǔ)設(shè)備所具有的多通道特性,存在執(zhí)行訪問請(qǐng)求效率低和導(dǎo)致大量數(shù)據(jù)復(fù)制等問題.
Fig. 2 Overall design of high concurrent NVM storage system based on conflict detection圖2 基于沖突檢測高吞吐NVM存儲(chǔ)系統(tǒng)的結(jié)構(gòu)
傳統(tǒng)存儲(chǔ)設(shè)備不具備處理能力,只能依賴主機(jī)CPU完成訪問請(qǐng)求的組織和管理,需要在主機(jī)和存儲(chǔ)設(shè)備之間反復(fù)傳輸管理訪問請(qǐng)求所需的大量數(shù)據(jù),這不僅僅增加了主機(jī)CPU的負(fù)擔(dān),也使得較慢的存儲(chǔ)設(shè)備接口速度這一瓶頸問題更加突出.此外,訪問存儲(chǔ)系統(tǒng)需要給大量不同的應(yīng)用提供數(shù)據(jù)存儲(chǔ)與訪問服務(wù),需要保證大量訪問請(qǐng)求之間的互斥,這給存儲(chǔ)系統(tǒng)的IO性能帶來了很大的挑戰(zhàn).
現(xiàn)有基于文件系統(tǒng)的鎖機(jī)制一般以文件為單位進(jìn)行訪問請(qǐng)求的互斥,如圖1所示,訪問請(qǐng)求A在訪問前需要對(duì)文件加鎖,但其僅需要訪問其中的少量數(shù)據(jù)或某一個(gè)數(shù)據(jù)塊;訪問請(qǐng)求B雖然與訪問請(qǐng)求A所訪問區(qū)域不重疊,但由于文件被加鎖機(jī)制,需要等待訪問請(qǐng)求A執(zhí)行完成后才能執(zhí)行.這種方式無法利用NVM存儲(chǔ)設(shè)備支持字節(jié)讀寫的特性,嚴(yán)重影響了執(zhí)行訪問請(qǐng)求的并發(fā)度,使用傳統(tǒng)存儲(chǔ)設(shè)備時(shí)對(duì)存儲(chǔ)系統(tǒng)IO性能的影響較小,但應(yīng)用于NVM存儲(chǔ)設(shè)備時(shí)推遲執(zhí)行訪問請(qǐng)求對(duì)IO性能的影響很大.
Fig. 1 Traditional lock mechanism access process圖1 現(xiàn)有存儲(chǔ)系統(tǒng)的鎖機(jī)制
現(xiàn)有鎖機(jī)制會(huì)將被鎖訪問請(qǐng)求對(duì)應(yīng)的進(jìn)程調(diào)度到阻塞狀態(tài),等待喚醒后再切換到就緒狀態(tài);進(jìn)程的調(diào)度和狀態(tài)轉(zhuǎn)換需要大量額外的時(shí)間開銷,而現(xiàn)有存儲(chǔ)系統(tǒng)中訪問請(qǐng)求的管理都是由主機(jī)CPU完成,這不僅需要反復(fù)在主機(jī)和NVM存儲(chǔ)設(shè)備之間傳輸大量數(shù)據(jù),嚴(yán)重影響NVM存儲(chǔ)系統(tǒng)的IO性能,還會(huì)給主機(jī)CPU帶來大量的計(jì)算開銷.
NVM存儲(chǔ)設(shè)備中存在多個(gè)并發(fā)通道,能同時(shí)執(zhí)行對(duì)NVM存儲(chǔ)設(shè)備不同區(qū)域的訪問請(qǐng)求,但現(xiàn)有的訪問請(qǐng)求管理機(jī)制和鎖策略缺乏相應(yīng)的優(yōu)化策略,使得訪問請(qǐng)求在存儲(chǔ)設(shè)備中還是以串行方式運(yùn)行,嚴(yán)重影響了NVM存儲(chǔ)系統(tǒng)的吞吐率.
我們首先給出基于沖突檢測高吞吐NVM存儲(chǔ)系統(tǒng)的結(jié)構(gòu),再給出訪問請(qǐng)求的管理、調(diào)度、提交和釋放等方法.
NVM存儲(chǔ)設(shè)備具有極高的讀寫速度,傳統(tǒng)的鎖機(jī)制會(huì)嚴(yán)重影響其IO性能;同時(shí)NVM存儲(chǔ)設(shè)備具有處理能力,能獨(dú)立管理訪問請(qǐng)求.因此改造NVM存儲(chǔ)設(shè)備,使用訪問請(qǐng)求沖突檢測代替?zhèn)鹘y(tǒng)鎖機(jī)制,設(shè)計(jì)高吞吐的NVM存儲(chǔ)系統(tǒng),其結(jié)構(gòu)如圖2所示.
HTPM在NVM存儲(chǔ)設(shè)備中增加了基于二維鏈表的訪問請(qǐng)求管理模塊、基于沖突檢測的訪問請(qǐng)求調(diào)度模塊、新訪問請(qǐng)求提交模塊和訪問請(qǐng)求釋放模塊.其中基于二維鏈表的訪問請(qǐng)求管理模塊負(fù)責(zé)存儲(chǔ)NVM存儲(chǔ)設(shè)備中的讀寫訪問請(qǐng)求,減少管理訪問請(qǐng)求的時(shí)間開銷;基于沖突檢測的訪問請(qǐng)求調(diào)度模塊用于代替基于文件系統(tǒng)的鎖機(jī)制,通過檢測訪問請(qǐng)求是否與現(xiàn)有的訪問請(qǐng)求存在沖突,判斷訪問請(qǐng)求能否執(zhí)行;新訪問請(qǐng)求提交模塊負(fù)責(zé)管理NVM存儲(chǔ)設(shè)備所接收的新訪問請(qǐng)求;訪問請(qǐng)求釋放模塊用于在訪問請(qǐng)求執(zhí)行完成后,對(duì)與其沖突的訪問請(qǐng)求進(jìn)行管理.
由此HTPM能利用NVM存儲(chǔ)設(shè)備的嵌入式處理能力,自主組織和管理訪問請(qǐng)求,采用檢測訪問請(qǐng)求的方法代替時(shí)間開銷大的鎖操作,能減少NVM存儲(chǔ)系統(tǒng)與主機(jī)之間通信的數(shù)據(jù)量,提高NVM存儲(chǔ)系統(tǒng)執(zhí)行訪問請(qǐng)求的并發(fā)度和吞吐率.
存儲(chǔ)系統(tǒng)中讀與寫訪問請(qǐng)求存在很大的差異,讀訪問請(qǐng)求之間可以互相并發(fā),但寫訪問請(qǐng)求之間、讀寫訪問請(qǐng)求之間則可能存在互斥的關(guān)系;同時(shí)NVM存儲(chǔ)設(shè)備存在寫壽命有限的局限,以字節(jié)為單位執(zhí)行寫操作能延遲其使用壽命,而以字節(jié)為單位執(zhí)行讀操作則會(huì)給管理訪問請(qǐng)求帶來復(fù)雜性;因此將讀寫訪問請(qǐng)求分開,使用不同的數(shù)據(jù)結(jié)構(gòu)和方法進(jìn)行管理.首先給出讀和寫訪問請(qǐng)求的組織結(jié)構(gòu),再給出基于二維鏈表的訪問請(qǐng)求管理方法.
HTPM的讀訪問請(qǐng)求以塊為單位進(jìn)行管理,如果上層應(yīng)用提交的讀訪問請(qǐng)求包含多個(gè)數(shù)據(jù)塊,則將讀訪問請(qǐng)求以數(shù)據(jù)塊為單位拆分為多個(gè)讀訪問請(qǐng)求.圖3給出了HTPM中讀訪問請(qǐng)求的結(jié)構(gòu)HtReq_read,使用五元組(Req_id,Block_id,R_in_id,Next_req,Wait_write)表示.其中,Req_id是該讀訪問請(qǐng)求的標(biāo)識(shí);Block_id表示該讀訪問請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)塊標(biāo)識(shí);R_in_id表示上層讀訪問請(qǐng)求被拆分后對(duì)應(yīng)子讀訪問請(qǐng)求的內(nèi)部序號(hào),用于在所有子讀訪問請(qǐng)求全部執(zhí)行完之后,再依據(jù)R_in_id將這些子讀訪問請(qǐng)求重新組合;Next_req用于保存當(dāng)前讀訪問請(qǐng)求的下一個(gè)讀訪問請(qǐng)求;Wait_write指向與該讀訪問請(qǐng)求存在沖突的寫訪問請(qǐng)求鏈表,也是等待該讀訪問請(qǐng)求的所有寫訪問請(qǐng)求列表.
Fig. 3 Structure of read request圖3 讀訪問請(qǐng)求的結(jié)構(gòu)
HTPM的寫訪問請(qǐng)求以字節(jié)為單位進(jìn)行管理,在收到上層應(yīng)用提交的寫訪問請(qǐng)求后,長度大于一個(gè)數(shù)據(jù)塊的寫訪問請(qǐng)求按照HTPM中劃分的數(shù)據(jù)塊進(jìn)行拆分.如圖4所示,使用七元組HtReq_write(Req_id,Start_address,Length,W_in_id,Next_req,Wait_write,Wait_read)表示每個(gè)寫訪問請(qǐng)求.其中,Req_id是寫訪問請(qǐng)求的標(biāo)識(shí),Start_address是該寫訪問請(qǐng)求的啟始地址,Length是該寫訪問請(qǐng)求的大小,W_in_id是上層寫訪問請(qǐng)求被拆分后對(duì)應(yīng)子讀訪問請(qǐng)求的內(nèi)部序號(hào),Wait_write是等待該寫訪問請(qǐng)求的寫訪問請(qǐng)求的鏈表,Wait_read是等待該寫訪問請(qǐng)求的讀訪問請(qǐng)求的鏈表.
Fig. 4 Structure of write request圖4 寫訪問請(qǐng)求的結(jié)構(gòu)
在此基礎(chǔ)上,給出二維結(jié)構(gòu)的訪問請(qǐng)求管理方法.用讀執(zhí)行隊(duì)列(read execute queue, REQ)表示可執(zhí)行讀訪問請(qǐng)求管理結(jié)構(gòu),如圖5所示,REQ是不與其他訪問請(qǐng)求沖突的所有讀訪問請(qǐng)求的鏈表,讀訪問請(qǐng)求之間可以并發(fā),但與寫訪問請(qǐng)求會(huì)存在沖突,因此在每個(gè)HtReq_read結(jié)構(gòu)中再使用Wait_write鏈接與其存在沖突的寫訪問請(qǐng)求.
Fig. 5 Read access request management structure based on two-dimensional linked list圖5 基于二維鏈表的讀訪問請(qǐng)求管理結(jié)構(gòu)
圖6給出的是可執(zhí)行寫訪問請(qǐng)求管理結(jié)構(gòu)的示意圖,用寫執(zhí)行隊(duì)列(write execute queue, WEQ)表示,對(duì)應(yīng)的是當(dāng)前不與其他訪問請(qǐng)求沖突的所有寫訪問請(qǐng)求鏈表;寫訪問請(qǐng)求與其他讀、寫訪問請(qǐng)求之間均可能存在沖突,因此每個(gè)HtReq_write使用2個(gè)指針Wait_write和Wait_read鏈接與其存在沖突的寫訪問請(qǐng)求和讀訪問請(qǐng)求.
Fig. 6 Write access request management structure based on two-dimensional linked list圖6 基于二維鏈表的寫訪問請(qǐng)求管理結(jié)構(gòu)
由此,能適應(yīng)讀寫訪問請(qǐng)求的不同特性,使用不同粒度管理2類訪問請(qǐng)求,為減少訪問請(qǐng)求之間沖突的概率,提高執(zhí)行訪問請(qǐng)求的并發(fā)度提供支撐.
在HTPM基于二維鏈表訪問請(qǐng)求管理結(jié)構(gòu)的基礎(chǔ)上,設(shè)計(jì)基于沖突檢測的訪問請(qǐng)求調(diào)度算法,替代現(xiàn)基于文件系統(tǒng)的鎖機(jī)制,減少管理訪問請(qǐng)求時(shí)的額外時(shí)間開銷.
HTPM收到一個(gè)新訪問請(qǐng)求后,依據(jù)HtReq_read中保存的Block_id以及HtReq_write中的Start_address和Length,判斷與現(xiàn)有訪問請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)區(qū)之間是否存在覆蓋,決定新訪問請(qǐng)求與當(dāng)前的可執(zhí)行訪問請(qǐng)求之間是否沖突.如圖7(a)所示,假設(shè)當(dāng)前只有訪問請(qǐng)求A,判斷新訪問請(qǐng)求B與現(xiàn)有可執(zhí)行訪問請(qǐng)求之間無沖突,則新訪問請(qǐng)求B可以執(zhí)行;如圖7(b)所示,新訪問請(qǐng)求B與現(xiàn)有可執(zhí)行訪問請(qǐng)求之間存在數(shù)據(jù)區(qū)覆蓋,則判斷訪問請(qǐng)求B與訪問請(qǐng)求A之間存在沖突.
Fig. 7 Conflict detection mechanism圖7 沖突檢測方法
當(dāng)HTPM檢測新訪問請(qǐng)求與現(xiàn)有訪問請(qǐng)求之間存在沖突時(shí),會(huì)出現(xiàn)以下4種情況.
第1種情況:新增讀訪問請(qǐng)求與現(xiàn)有讀訪問請(qǐng)求之間存在沖突.如圖8所示,讀訪問請(qǐng)求之間可以并發(fā)執(zhí)行,雖然新增讀訪問請(qǐng)求與現(xiàn)有讀訪問請(qǐng)求之間存在沖突,但新增讀訪問請(qǐng)求同樣可以執(zhí)行,因此將其加入到REQ的尾部.
Fig. 8 Conflict between the new and current read request圖8 新增讀與現(xiàn)有讀訪問請(qǐng)求之間的沖突
第2種情況:新增寫訪問請(qǐng)求與現(xiàn)有讀訪問請(qǐng)求之間存在沖突.如圖9所示,此時(shí)新增寫訪問請(qǐng)求必須等待現(xiàn)有讀訪問請(qǐng)求執(zhí)行完才能執(zhí)行,因此將其加入到現(xiàn)有讀訪問請(qǐng)求中Wait_write所指向的等待隊(duì)列中.
Fig. 9 Conflict between the new write and current read request圖9 新增寫與現(xiàn)有讀訪問請(qǐng)求之間的沖突
第3種情況:新增讀訪問請(qǐng)求與現(xiàn)有寫訪問請(qǐng)求之間存在沖突.如圖10所示,此時(shí)新增讀訪問請(qǐng)求必須等待現(xiàn)有寫訪問請(qǐng)求執(zhí)行完才能執(zhí)行,因此將其加入到現(xiàn)有寫訪問請(qǐng)求中Wait_read所指向的等待隊(duì)列中.
Fig. 10 Conflict between the new read and current write request圖10 新增讀與現(xiàn)有寫訪問請(qǐng)求之間的沖突
第4種情況:新增寫訪問請(qǐng)求與現(xiàn)有寫訪問請(qǐng)求之間存在沖突.如圖11所示,此時(shí)新增寫訪問請(qǐng)求必須等待現(xiàn)有寫訪問請(qǐng)求執(zhí)行完才能執(zhí)行,因此將其加入到現(xiàn)有寫訪問請(qǐng)求中Wait_write所指向的等待隊(duì)列中.
Fig. 11 Conflict between the new and current write request圖11 新增寫與現(xiàn)有寫訪問請(qǐng)求之間的沖突
由此,使用基于沖突檢測的方法代替基于文件系統(tǒng)鎖機(jī)制,配合3.2節(jié)所設(shè)計(jì)的訪問請(qǐng)求管理方法,能有效降低訪問請(qǐng)求沖突的概率,提高執(zhí)行訪問請(qǐng)求的并發(fā)度;同時(shí)將需要訪問請(qǐng)求的互斥管理分散到各個(gè)訪問請(qǐng)求中,降低了管理訪問請(qǐng)求的復(fù)雜度,也減少了修改訪問請(qǐng)求管理結(jié)構(gòu)時(shí)需要封鎖的粒度,通過降低管理訪問請(qǐng)求對(duì)應(yīng)數(shù)據(jù)結(jié)構(gòu)所需時(shí)間開銷,提高NVM存儲(chǔ)系統(tǒng)的性能.
HTPM收到上層應(yīng)用提交訪問請(qǐng)求后,需要使用基于沖突檢測的訪問請(qǐng)求調(diào)度算法分別與REQ和WEQ中可執(zhí)行的讀寫訪問請(qǐng)求進(jìn)行比較,以判斷新訪問請(qǐng)求能否提交給HTPM執(zhí)行.
新增讀訪問請(qǐng)求向HTPM的提交算法流程為:將一個(gè)新增的讀訪問請(qǐng)求提交到HTPM時(shí),因?yàn)樽x訪問請(qǐng)求之間可以并發(fā)執(zhí)行,僅使用WEQ中可執(zhí)行寫訪問請(qǐng)求hr與新增讀訪問請(qǐng)求hrr進(jìn)行沖突檢測;如存在沖突,那么就將hrr插入到hr的Wait_read指針?biāo)赶虻臎_突鏈表中,并結(jié)束循環(huán).如果hrr和WEQ中所有可執(zhí)行寫訪問請(qǐng)求hr均無沖突,那么就將其插入到REQ的末尾,作為可以執(zhí)行的讀訪問請(qǐng)求,并等待HTPM的執(zhí)行.
算法1.新增讀訪問請(qǐng)求向HTPM的提交算法.
輸入:HTPM中的讀請(qǐng)求hrr.
① for eachhrin WEQ do
② lethr與hrr進(jìn)行沖突檢測;
③ ifhr與hr存在訪問沖突 then
④ lethrr插入到hr.Wait_read;
⑤ break;
⑥ else
⑦ continue;
⑧ end if
⑨ end for
⑩ lethrr插入到REQ.tail.
新增寫訪問請(qǐng)求向HTPM的提交算法流程為:寫訪問請(qǐng)求與現(xiàn)有可執(zhí)行讀和寫訪問請(qǐng)求均可能存在沖突,所以提交一個(gè)新寫訪問請(qǐng)求時(shí),需要將其與REQ和WEQ中可執(zhí)行的訪問請(qǐng)求均進(jìn)行沖突檢測;首先將新增寫訪問請(qǐng)求hrw分別與REQ和WEQ中的可執(zhí)行訪問請(qǐng)求hr進(jìn)行沖突檢測.如果存在沖突,那么將hrw插入到REQ和WEQ中可執(zhí)行訪問請(qǐng)求的Wait_write指針指向的沖突鏈表中;否則,將該新增寫訪問請(qǐng)求hrw插入到WEQ的末尾,并提交給HTPM執(zhí)行.
算法2.新增寫訪問請(qǐng)求向HTPM的提交算法.
輸入:HTPM中的讀請(qǐng)求hrr.
① EQ是REQ和WEQ的并集;
② for eachhrin EQ do
③ lethr與hrr進(jìn)行沖突檢測;
④ ifhrr與hr存在訪問沖突 then
⑤ lethrr插入到hr.Wait_write;
⑥ break;
⑦ else
⑧ continue;
⑨ end if
⑩ end for
HTPM在執(zhí)行完REQ或WEQ中某個(gè)訪問請(qǐng)求后,需要釋放REQ或WEQ結(jié)構(gòu)中記錄的存在沖突讀寫訪問請(qǐng)求,但這些讀寫訪問請(qǐng)求還可能會(huì)與其他現(xiàn)有可執(zhí)行訪問請(qǐng)求存在沖突.
在訪問請(qǐng)求中保存沖突數(shù)或沖突指針等方法,可以用于判斷能否釋放訪問請(qǐng)求,但每次修改沖突計(jì)數(shù)或沖突指針均需要進(jìn)行加解鎖操作,帶來了較高的時(shí)間開銷,難以適應(yīng)NVM存儲(chǔ)系統(tǒng)讀寫速度高的特性.
同樣,利用NVM存儲(chǔ)設(shè)備的嵌入式處理器檢測等待釋放的訪問請(qǐng)求,代替?zhèn)鹘y(tǒng)的鎖機(jī)制,設(shè)計(jì)已有訪問請(qǐng)求釋放算法,如算法3所示:
算法3.HTPM中請(qǐng)求釋放算法.
輸入:HTPM中的讀請(qǐng)求hrr(hrr已執(zhí)行).
① ifhrr是讀請(qǐng)求 then
② for eachhrinhrr.Wait_write;
③ 使用算法1處理hr;
④ end for
⑤ else ifhrr是寫請(qǐng)求
⑥ letlist=intersection ofhr.Wait_readandhr.Wait_write;
⑦ for eachhrinlistdo
⑧ 使用算法1處理hr;
⑨ end for
⑩ end if
當(dāng)一個(gè)讀訪問請(qǐng)求hr執(zhí)行完成后,遍歷其Wait_write鏈表中的訪問請(qǐng)求,將這些訪問請(qǐng)求作為HTPM的新訪問請(qǐng)求,使用3.3節(jié)和3.4節(jié)中給出的算法進(jìn)行檢測.當(dāng)寫訪問請(qǐng)求hr執(zhí)行完成之后,遍歷其Wait_write和Wait_read鏈表中的訪問請(qǐng)求,同樣將這些訪問請(qǐng)求作為HTPM的新訪問請(qǐng)求,使用3.3節(jié)和3.4節(jié)中給出的算法進(jìn)行檢測.
由此避免了使用鎖機(jī)制,便于提高NVM存儲(chǔ)系統(tǒng)執(zhí)行訪問請(qǐng)求的并發(fā)性,從而提高NVM存儲(chǔ)系統(tǒng)的吞吐率.
我們首先給出模擬NVM存儲(chǔ)設(shè)備的方法,再給出HTPM原型系統(tǒng)的實(shí)現(xiàn)方法.
由于沒有可用的NVM設(shè)備,我們采用Intel的基于內(nèi)存的開源NVM存儲(chǔ)設(shè)備模擬器PMEM[25]來模擬NVM存儲(chǔ)設(shè)備;同時(shí)在Linux內(nèi)核地址的尾部預(yù)留40 GB的空間作為PMEM的存儲(chǔ)地址空間.
PMEM是使用DRAM存儲(chǔ)數(shù)據(jù),沒有模擬NVM存儲(chǔ)介質(zhì)寫速度低于DRAM的特性,我們?cè)赑MEM中增加寫入延遲,參考文獻(xiàn)[8,26]中的方法,在每次clflush和mfence指令之后增加200 ns的延遲來模擬NVM存儲(chǔ)介質(zhì)寫入速度低于DRAM的特性.
首先在開源的PMEM的nd_pmem模塊中,增加了讀寫請(qǐng)求結(jié)構(gòu)HtReq_read和HtReq_write以及讀寫請(qǐng)求執(zhí)行隊(duì)列結(jié)構(gòu)REQ和WEQ.接著在PMEM中增加基于二維鏈表的訪問請(qǐng)求管理模塊、基于沖突檢測的訪問請(qǐng)求調(diào)度模塊、新訪問請(qǐng)求提交模塊和訪問請(qǐng)求釋放模塊,構(gòu)建HTPM的原型,修改和增加了約1 000多行代碼.
此外,對(duì)4.4.4112版本內(nèi)核的EXT4文件系統(tǒng)和XFS文件系統(tǒng)模塊進(jìn)行修改,去除讀寫函數(shù)內(nèi)的加解鎖操作,使訪問請(qǐng)求直接被提交至HTPM,由HTPM統(tǒng)一管理訪問請(qǐng)求、實(shí)現(xiàn)多個(gè)訪問請(qǐng)求訪問同一數(shù)據(jù)時(shí)的互斥.
使用一臺(tái)服務(wù)器構(gòu)建HTPM原型系統(tǒng)的測試環(huán)境,該服務(wù)器的配置如表1所示:
Table 1 Configuration of Evaluation表1 原型系統(tǒng)測試環(huán)境的軟硬件配置
分別在HTPM上加載Ext4和XFS這2種文件系統(tǒng),數(shù)據(jù)塊大小設(shè)置為4 KB,首先使用Filebench中的Webserver,Varmail,F(xiàn)ileserver負(fù)載,模擬存儲(chǔ)系統(tǒng)的不同運(yùn)行環(huán)境,測試HTPM的吞吐率,再使用Fio測試順序和隨機(jī)讀寫的IO性能,并與PMEM進(jìn)行比較.
每項(xiàng)均測試10次,并在每次測試之后重啟服務(wù)器來和禁用緩存以消除緩存對(duì)測試結(jié)果的影響,最后取10次測試的平均值作為測試結(jié)果.
分別在PMEM和HTPM上加載Ext4和XFS文件系統(tǒng),使用Filebench的Webserver負(fù)載,模擬用戶訪問Web服務(wù)器的情況,設(shè)置測試文件數(shù)量為1 000,每個(gè)目錄中創(chuàng)建20個(gè)文件,每次IO大小為1 MB,IO操作中讀寫訪問請(qǐng)求的比例為10∶1,測試時(shí)間為60 s,測試線程數(shù)量為2,4,6,8,10,12,14時(shí)的吞吐率IOPS(InputOutput operations per second)值,結(jié)果如圖12所示.
從圖12可以看出,相比PMEM,HTPM能有效提高Ext4和XFS的IOPS值.當(dāng)線程數(shù)量為2時(shí),IOPS值分別提高了6.1%和6.3%.這是因?yàn)閃ebserver負(fù)載中大部分是讀訪問請(qǐng)求,還不能充分體現(xiàn)HTPM中基于沖突檢測的訪問請(qǐng)求調(diào)度算法相比傳統(tǒng)鎖機(jī)制的優(yōu)勢.隨著線程數(shù)增加到8,PMEM上Ext4和XFS的IOPS值達(dá)到了最大值,之后隨著線程數(shù)的增加,IOPS的值逐漸下降,這是由于隨著線程數(shù)的增加,訪問請(qǐng)求之間的鎖操作越來越多,影響了訪問請(qǐng)求執(zhí)行的并發(fā)度;而HTPM在線程數(shù)為8時(shí),相比PMEM,Ext4和XFS的IOPS值分別提高了17.2%和17.1%;同時(shí)隨著線程數(shù)的繼續(xù)增加,HTPM上Ext4和XFS的IOPS值能保持不降低,這是由于HTPM中基于沖突檢測的訪問請(qǐng)求調(diào)度算法避免了多線程時(shí)鎖機(jī)制帶來的額外時(shí)間開銷.這些結(jié)果表明,HTPM能更好地適應(yīng)多線程環(huán)境的訪問特性,相比PMEM具有更穩(wěn)定的吞吐率.
Fig. 12 Webserver workload test圖12 使用Webserver負(fù)載的測試
使用Filebench的Varmail負(fù)載,模擬Email服務(wù)器的使用情況.設(shè)置文件數(shù)量為1 000,每個(gè)目錄中創(chuàng)建的文件數(shù)量為1 000 000,每次IO大小為1 MB,IO操作中讀寫訪問請(qǐng)求的比例為 1∶1,測試時(shí)間為60 s,測試線程數(shù)量為2,4,6,8,10,12,14時(shí)的吞吐率IOPS值,結(jié)果如圖13所示.
從圖13可以發(fā)現(xiàn),HTPM上Ext4和XFS的IOPS值相比PMEM均有所提高.在線程數(shù)小于6時(shí),XFS的IOPS值隨著線程數(shù)增加而逐步提高;在線程數(shù)為6時(shí),PMEM上XFS的IOPS值達(dá)到最大值,此時(shí)HTPM上XFS相比PMEM上XFS能提高18.2%的IOPS值;隨著線程數(shù)的進(jìn)一步增加,PMEM上XFS的IOPS值開始逐步下降,而HTPM上XFS的IOPS值則始終保持不變.
Ext4的IOPS值情況類似,PMEM上Ext4的IOPS最大值出現(xiàn)在線程數(shù)為14時(shí),此時(shí)Ext4在HTPM上的IOPS值要比在PMEM上提升了25.5%.此外,使用Varmail負(fù)載時(shí),HTPM上Ext4的IOPS值比XFS的IOPS值高出很多,這是由于Varmail負(fù)載中小文件居多,而XFS讀寫小文件的效率低于Ext4.
Fig. 13 Varmail workload test圖13 使用Varmail負(fù)載測試的測試
使用Filebench的Fileserver負(fù)載,模擬文件服務(wù)器中文件共享和讀寫操作等情況.設(shè)置文件數(shù)量為10 000,每個(gè)目錄中創(chuàng)建20個(gè)文件,每次IO大小為1 MB,IO操作中讀寫訪問請(qǐng)求的比例為1∶10,測試時(shí)間為60 s,測試線程數(shù)量為2,4,6,8,10,12,14時(shí)的吞吐率IOPS值,結(jié)果如圖14所示.
Fig. 14 Fileserver workload test圖14 使用Fileserver負(fù)載的測試
從圖14可以發(fā)現(xiàn),當(dāng)線程數(shù)為2時(shí),HTPM上Ext4和XFS的IOPS值相比PMEM提高了15.2%和17%;隨著進(jìn)程數(shù)量的增加,相比PMEM,HTPM上Ext4和XFS的IOPS值所增加的幅度不斷提高;在線程數(shù)為12時(shí),PMEM上Ext4和XFS的IOPS值達(dá)到了最大值,此時(shí)Ext4和XFS在HTPM上相比PMEM提高了31.9%和30.3%;隨著線程數(shù)繼續(xù)增加,PMEM上Ext4和XFS的IOPS值開始下降,而HTPM上Ext4和XFS的IOPS值則保持穩(wěn)定.相較于Webserver和Varmail負(fù)載,使用Fileserver負(fù)載時(shí),HTPM上Ext4和XFS的IOPS值提高幅度更大.這是因?yàn)镕ileserver負(fù)載中寫訪問請(qǐng)求的比例較高,所導(dǎo)致的鎖操作也更多,從而能更好地體現(xiàn)出基于沖突檢測的訪問請(qǐng)求調(diào)度算法相比鎖機(jī)制的優(yōu)勢.
Fig. 15 Sequential read test圖15 順序讀的測試
從圖15可以發(fā)現(xiàn),當(dāng)線程數(shù)為6讀寫塊大小為4 KB,16 KB,256 KB時(shí),HTPM順序讀IO性能相比PMEM分別提升了3.4%,4.3%,5.4%;當(dāng)線程數(shù)為12時(shí),HTPM所提高的IO性能比例更高;這表明HTPM能更好地適應(yīng)高并發(fā)的運(yùn)行環(huán)境,發(fā)揮NVM存儲(chǔ)設(shè)備的優(yōu)勢,通過增加執(zhí)行訪問請(qǐng)求的并發(fā)度,提高存儲(chǔ)系統(tǒng)的IO性能.
Fig. 16 Sequential write test圖16 順序?qū)懙臏y試
從圖16可以看出,在線程數(shù)為6讀寫塊大小為4 KB,16 KB,256 KB時(shí),HTPM順序?qū)慖O性能相比PMEM分別提升了12.3%,14.7%,17.3%;當(dāng)線程數(shù)為12時(shí),HTPM的順序?qū)慖O性能相比PMEM分別提升了15.6%,18.4%,21.4%;相比順序讀,HTPM相比PMEM在執(zhí)行順序?qū)懖僮鲿r(shí)所提高的IO性能比例更高,這是因?yàn)閷懖僮鲿?huì)導(dǎo)致更多的鎖操作,從而更好地體現(xiàn)了基于沖突檢測訪問請(qǐng)求調(diào)度算法的優(yōu)勢.
NVM存儲(chǔ)設(shè)備相比傳統(tǒng)存儲(chǔ)設(shè)備隨機(jī)讀寫性能更高,但同時(shí)也會(huì)使得現(xiàn)有IO棧成為影響存儲(chǔ)系統(tǒng)IO性能的瓶頸.再使用Fio測試HTPM隨機(jī)讀寫IO性能,首先測試隨機(jī)讀的IO性能,選擇Fio中的異步IO引擎libaio,隊(duì)列深度設(shè)置為32,測試數(shù)據(jù)的大小為10 GB,測試時(shí)間為60 s,使用direct參數(shù)跳過緩存,測試線程的數(shù)量分別為6和12,讀寫塊大小分別為4 KB,16 KB,256 KB.結(jié)果如圖17所示.
Fig. 17 Random read test圖17 隨機(jī)讀的測試
從圖17可以看出,在線程數(shù)為6讀寫塊大小為4 KB,16 KB,256 KB時(shí),HTPM相比PMEM分別提升了3.2%,4.1%,5.1%的隨機(jī)讀IO性能;在線程數(shù)為12時(shí),HTPM的隨機(jī)讀IO性能相比PMEM分別提升了5.1%,5.4%,5.9%;總的來說,HTPM相比PMEM隨機(jī)讀IO性能提高的比例與順序讀接近,這表明HTPM在執(zhí)行隨機(jī)讀操作時(shí)同樣具有較好的優(yōu)勢.
Fig. 18 Random write test圖18 隨機(jī)寫的測試
從圖18可以看出,在線程數(shù)為6讀寫塊大小為4 KB,16 KB,256 KB時(shí),HTPM相比PMEM分別提升了11.4%,13.2%,17.1%的隨機(jī)寫IO性能.當(dāng)線程數(shù)為12時(shí),HTPM的隨機(jī)寫IO性能相比PMEM分別提升了14.5%,17.2%,20.4%.此外與順序讀寫的測試結(jié)果類似,HTPM在執(zhí)行隨機(jī)寫操作時(shí)所提高IO性能的比例高于執(zhí)行隨機(jī)讀操作時(shí).
NVM存儲(chǔ)設(shè)備能有效解決計(jì)算機(jī)系統(tǒng)的存儲(chǔ)墻問題,具有接近DRAM的讀寫速度、嵌入式處理能力、內(nèi)部多通道并發(fā)讀寫能力和較慢速的設(shè)備接口等一些列特性,這給現(xiàn)有IO棧帶來了很大的挑戰(zhàn).基于文件系統(tǒng)的鎖機(jī)制是影響其構(gòu)建的NVM存儲(chǔ)系統(tǒng)性能的重要因素.
本文將存儲(chǔ)系統(tǒng)訪問請(qǐng)求的管理嵌入到存儲(chǔ)設(shè)備中,使用基于沖突檢測的訪問請(qǐng)求調(diào)度算法代替現(xiàn)有基于文件系統(tǒng)的鎖機(jī)制,提高NVM存儲(chǔ)系統(tǒng)的吞吐率.首先給出了高吞吐NVM存儲(chǔ)系統(tǒng)的結(jié)構(gòu);接著給出了基于二維鏈表訪問請(qǐng)求管理方法、基于沖突檢測的訪問請(qǐng)求調(diào)度算法、新訪問請(qǐng)求提交和已有訪問請(qǐng)求釋放流程,利用NVM存儲(chǔ)設(shè)備的嵌入式處理器自主完成訪問請(qǐng)求的管理,提高訪問請(qǐng)求執(zhí)行并發(fā)度,緩解速度較低的設(shè)備接口所帶來的瓶頸問題;最后實(shí)現(xiàn)了HTPM的原型系統(tǒng),使用Filebench中的多種負(fù)載和Fio測試了HTPM的性能,實(shí)驗(yàn)結(jié)果表明,HTPM相比PMEM最大能提高31.9%的IOPS值和21.4%的IO性能.
HTPM還未考慮REQ和WEQ之間的協(xié)調(diào)和優(yōu)化隊(duì)列管理,也未考慮多核環(huán)境下的優(yōu)化策略,下一步擬從這2方面進(jìn)行改進(jìn),進(jìn)一步提高NVM存儲(chǔ)系統(tǒng)的性能.