蔡濤 陳志鵬 牛德姣 王杰 詹畢晟
摘 要:I/O系統(tǒng)軟件棧是影響NVM存儲(chǔ)系統(tǒng)性能的重要因素。針對(duì)NVM存儲(chǔ)系統(tǒng)的讀寫速度不均衡、寫壽命有限等問題,設(shè)計(jì)了同異步融合的訪問請(qǐng)求管理策略;在使用異步策略管理數(shù)據(jù)量較大的寫操作的同時(shí),仍然使用同步策略管理讀請(qǐng)求和少量數(shù)據(jù)的寫請(qǐng)求。針對(duì)多核處理器環(huán)境下不同計(jì)算核心訪問存儲(chǔ)系統(tǒng)時(shí)地址轉(zhuǎn)換開銷大的問題,設(shè)計(jì)了面向多核處理器地址轉(zhuǎn)換緩存策略,減少地址轉(zhuǎn)換的時(shí)間開銷。最后實(shí)現(xiàn)了支持高并發(fā)訪問NVM存儲(chǔ)系統(tǒng)(CNVMS)的原型,并使用通用測(cè)試工具進(jìn)行了隨機(jī)讀寫、順序讀寫、混合讀寫和實(shí)際應(yīng)用負(fù)載的測(cè)試。實(shí)驗(yàn)結(jié)果表明,與PMBD相比,所提策略能提高1%~22%的I/O性能讀寫速度三校人員提出的問題,此處是否應(yīng)該為“讀寫速度”?若是的話,也請(qǐng)補(bǔ)充英文譯文。回復(fù):中文可以寫成“讀寫速度”意思和I/O性能是相同的。和9%~15%的IOPS此處是否應(yīng)該為“訪問請(qǐng)求處理速度”?IOPS不是I/O性能的一個(gè)指標(biāo)嗎?這兩個(gè)指標(biāo)這樣書寫準(zhǔn)確嗎?請(qǐng)明確。回復(fù):IOPS是每秒處理的訪問請(qǐng)求數(shù)量。一般都用英文簡(jiǎn)寫的。,驗(yàn)證了CNVMS策略能有效提高NVM存儲(chǔ)系統(tǒng)的I/O性能和訪問請(qǐng)求處理速度。
關(guān)鍵詞:NVM;存儲(chǔ)系統(tǒng);I/O系統(tǒng)軟件棧
中圖分類號(hào): TP316.4
文獻(xiàn)標(biāo)志碼:A
Abstract: I/O system software stack is an important factor that affects the efficiency of NVM (Non-Volatile Memory) storage system. For NVM storage systems with unbalanced read/write speeds and limited writing lifetimes, new synchronous and asynchronous converged access management strategy was designed. While an asynchronous write cache was implemented by DRAM for the write access to large data, synchronous management strategy was still used for the read access and the write access to small data. Addressing large time overhead of address translation for NVM storage systems by conflict among cores in a computer with multi-core processor, a new address translation cache was designed for multi-core processor to reduce time overhead of address translation. Finally, a prototype of Concurrent NVM Storage system (CNVMS) was implemented, and the universal testing tools were used to test performance of random reads writes, sequential reads writes, mixed reads/writes and with actual application workload. The experimental results show that the proposed strategy increases I/O performanceread and write speed by 1%-22% and IOPS (Input/Output operations Per Second) by 9%-15% compared with PMBD (Persistent Memory Block Driver根據(jù)文獻(xiàn)23,PMBD中的Driver,是否應(yīng)該為Device?請(qǐng)明確), which verifies that CNVMS strategy can provide higher I/O performance and better access request processing speed.
Key words: Non-Volatile Memory (NVM); storage system; I/O system software stack
0 引言
計(jì)算機(jī)系統(tǒng)中各部件的發(fā)展很不均衡,傳統(tǒng)存儲(chǔ)部件的讀寫速度遠(yuǎn)低于計(jì)算部件的處理能力,這導(dǎo)致了嚴(yán)重的存儲(chǔ)墻問題[1]。由于存在機(jī)械部件,傳統(tǒng)的磁盤很難有效提高讀寫速度?;贔lash的SSD(Solid State Drives)具有較高的I/O性能,但存在寫壽命短和僅支持以塊為單位的讀寫操作等問題。當(dāng)前出現(xiàn)了一系列NVM(Non-Volatile Memory)存儲(chǔ)器件,如PCM(Phase Change Memory)[2]、STT-RAM(Shared Transistor Technology Random Access Memory)[3]和FeRAM(Ferroelectric RAM)[4]等,具有支持以字節(jié)為單位的讀寫、較長(zhǎng)的寫壽命、低功耗和接近DRAM(Dynamic Random Access Memory)的讀寫速度等優(yōu)勢(shì),成為解決存儲(chǔ)墻問題的重要手段。雖然有部分NVM存儲(chǔ)器件還存在寫壽命不夠高的問題,但隨著技術(shù)的發(fā)展,NVM存儲(chǔ)設(shè)備和所構(gòu)建的存儲(chǔ)系統(tǒng)已成為當(dāng)前研究和開發(fā)的熱點(diǎn)。
NVM存儲(chǔ)系統(tǒng)具有較高的讀寫性能,這使得現(xiàn)有面向低速外存設(shè)備設(shè)計(jì)的I/O系統(tǒng)軟件棧成為影響存儲(chǔ)系統(tǒng)性能的重要因素,相關(guān)研究表明在用于NVM存儲(chǔ)系統(tǒng)時(shí)I/O系統(tǒng)軟件的開銷占總開銷的94%以上,因此減少I/O系統(tǒng)軟件棧的時(shí)間開銷是提高NVM存儲(chǔ)系統(tǒng)性能的重要手段。當(dāng)前已有一些新型的NVM文件系統(tǒng),相比傳統(tǒng)文件系統(tǒng),能適應(yīng)NVM存儲(chǔ)系統(tǒng)的特性,有效地提高訪問NVM存儲(chǔ)系統(tǒng)的效率,但NVM存儲(chǔ)系統(tǒng)內(nèi)部的管理機(jī)制則沒有太多的改變,仍然使用傳統(tǒng)存儲(chǔ)設(shè)備或基于Flash的SSD的管理方式,而這成為了影響NVM存儲(chǔ)系統(tǒng)性能的重要因素。
由于NVM存儲(chǔ)器件自身的特性限制,NVM存儲(chǔ)系統(tǒng)不僅在讀寫性能存在很大區(qū)別,而且也存在寫壽命較短的問題;但現(xiàn)有的存儲(chǔ)系統(tǒng)訪問請(qǐng)求管理策略僅僅使用單一的同步或異步策略管理所有訪問請(qǐng)求,不能區(qū)分訪問請(qǐng)求的不同類型以適應(yīng)NVM存儲(chǔ)系統(tǒng)的特性。由于NVM存儲(chǔ)系統(tǒng)具有接近于DRAM的讀寫速度,使得NVM存儲(chǔ)系統(tǒng)中邏輯和物理地址之間的轉(zhuǎn)換也成為影響I/O性能的重要因素;在多核處理器環(huán)境中,雖然私有映射能降低減少不同計(jì)算核心訪問NVM存儲(chǔ)系統(tǒng)空間時(shí)的沖突,但也使得多個(gè)計(jì)算核心之間無法共享地址轉(zhuǎn)換信息,從而影響了地址轉(zhuǎn)換的效率,因此如何針對(duì)NVM存儲(chǔ)系統(tǒng)的特性,研究具有高并發(fā)特性的新型訪問機(jī)制是提高NVM存儲(chǔ)系統(tǒng)性能需要解決的重要問題。
本文首先給出當(dāng)前相關(guān)的研究,接著給出支持高并發(fā)訪問NVM存儲(chǔ)系統(tǒng)的結(jié)構(gòu),再設(shè)計(jì)同異步融合的訪問請(qǐng)求管理策略和面向多核處理器的地址轉(zhuǎn)換緩存策略,并在開源的NVM存儲(chǔ)系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)原型系統(tǒng),使用通用測(cè)試工具進(jìn)行測(cè)試與對(duì)比分析。本文的主要貢獻(xiàn)如下:
1)根據(jù)讀寫訪問請(qǐng)求的不同特性,融合同步和異步訪問請(qǐng)求管理策略,利用NVM存儲(chǔ)系統(tǒng)中DRAM構(gòu)建的緩存減少較大數(shù)據(jù)量寫請(qǐng)求的響應(yīng)時(shí)間;同時(shí)仍然使用同步策略完成讀和少量數(shù)據(jù)寫請(qǐng)求操作,在簡(jiǎn)化緩存管理和同時(shí)也避免冗余寫操作對(duì)讀和少量數(shù)據(jù)寫請(qǐng)求性能的影響。
2)在多核處理器使用私有映射的基礎(chǔ)上,構(gòu)建了多個(gè)計(jì)算核心共享的地址轉(zhuǎn)換緩存,實(shí)現(xiàn)了不同計(jì)算核心之間地址轉(zhuǎn)換緩存項(xiàng)的共享,降低了不同計(jì)算核心進(jìn)行邏輯地址和物理地址轉(zhuǎn)換時(shí)沖突的幾率,減少了地址轉(zhuǎn)換的時(shí)間開銷,提高了NVM存儲(chǔ)系統(tǒng)的I/O性能。
3)實(shí)現(xiàn)了支持高并發(fā)訪問NVM存儲(chǔ)系統(tǒng)(Concurrent NVM Storage system, CNVMS)的原型,使用通用測(cè)試工具進(jìn)行了隨機(jī)讀寫、順序讀寫、混合讀寫和實(shí)際應(yīng)用負(fù)載的測(cè)試,驗(yàn)證了CNVMS相比現(xiàn)有NVM存儲(chǔ)系統(tǒng)具有更高的I/O性能和IOPS(Input/Output operations Per Second)。
1 相關(guān)研究工作
當(dāng)前為了提高NVM存儲(chǔ)系統(tǒng)的性能和并發(fā)性,研究者主要針對(duì)NVM存儲(chǔ)系統(tǒng)的特性,從如何優(yōu)化I/O系統(tǒng)軟件棧和優(yōu)化基于寫保護(hù)的地址轉(zhuǎn)換策略展開研究。
優(yōu)化I/O系統(tǒng)軟件棧方面:文獻(xiàn)[5]在訪問PCM存儲(chǔ)設(shè)備時(shí),使用輪詢方式的效率優(yōu)于中斷方式,同時(shí)存儲(chǔ)軟件棧中使用同步I/O機(jī)制的效率高于異步I/O機(jī)制。與傳統(tǒng)的異步I/O相比,同步I/O可以減少I/O請(qǐng)求所需的CPU時(shí)鐘周期,這種減少主要來自縮短的內(nèi)核路徑和中斷處理的去除。異步I/O在處理具有較大傳輸大小數(shù)據(jù)量的I/O請(qǐng)求或處理導(dǎo)致較長(zhǎng)等待時(shí)間的硬件延遲時(shí)會(huì)更好;而同步I/O適合較小傳輸大小數(shù)據(jù)量這兩處的“大小”,是否應(yīng)該改為“數(shù)據(jù)量”更為恰當(dāng)些?請(qǐng)明確的I/O請(qǐng)求;同時(shí)針對(duì)高速的NVM存儲(chǔ)設(shè)備,當(dāng)存在大規(guī)模數(shù)據(jù)讀寫以及一定的硬件延遲時(shí),異步I/O訪問依然是高效的。文獻(xiàn)[6]針對(duì)PCM讀性能高的特性,對(duì)PCIe口的NVM存儲(chǔ)設(shè)備,采用輪詢的方法,消除PCI Express的封包和上下文切換,提高讀性能。文獻(xiàn)[7]設(shè)計(jì)了新型文件系統(tǒng)PMFS(Persistent Memory File System),使用存儲(chǔ)級(jí)NVM作內(nèi)存,直接通過load/store訪問NVM,簡(jiǎn)化I/O系統(tǒng)軟件棧,繞過頁(yè)緩存,從而避免了雙倍拷貝開銷。研究者Ou等[8]設(shè)計(jì)了針對(duì)NVM主存的寫緩存機(jī)制以及DRAM中索引與緩存行中位圖相結(jié)合的讀一致性機(jī)制,并構(gòu)建了緩存貢獻(xiàn)模型挑選NVM主存的寫操作,實(shí)現(xiàn)了面向NVM主存的文件系統(tǒng)HINFS(High-Performance Non-Volatile File System請(qǐng)補(bǔ)充HINFS的英文全稱)。Lu等[9]針對(duì)非易失內(nèi)存設(shè)計(jì)了模糊持久性的事務(wù)機(jī)制,這模糊了易失持久性的邊界來減少事務(wù)支撐的開銷,并在多種負(fù)載的測(cè)試下提升了56.3%到143.7%的性能,而事務(wù)的開銷主要包括日志的執(zhí)行和易失檢查點(diǎn)的批量持久化。文獻(xiàn)[10]中針對(duì)PCM設(shè)計(jì)了基于頁(yè)的高效管理方式,適應(yīng)上層應(yīng)用的訪問方式,首先使用雙向鏈表管理PCM中的頁(yè),再使用DRAM構(gòu)建了PCM頁(yè)的緩存并設(shè)計(jì)了基于進(jìn)入時(shí)間的淘汰算法,最后綜合頁(yè)遷移和交換信息優(yōu)化了PCM中頁(yè)的分配。文獻(xiàn)[11]修改了虛擬文件系統(tǒng),并設(shè)計(jì)了非阻塞的寫機(jī)制,消除了填充頁(yè)緩存造成的阻塞,能快速釋放寫請(qǐng)求。Benchmark的測(cè)試結(jié)果顯示吞吐量相比磁盤平均提高了7倍,相比SSD平均提高了4.2倍。文獻(xiàn)[12-13]利用基于硬件的文件系統(tǒng)訪問控制,分離元數(shù)據(jù)和數(shù)據(jù)的訪問路徑,使用用戶空間與存儲(chǔ)設(shè)備之間的直接I/O,避免修改元數(shù)據(jù),減少了文件系統(tǒng)訪問控制、數(shù)據(jù)訪問等操作中存儲(chǔ)軟件棧的開銷。文獻(xiàn)[14]中針對(duì)SSD設(shè)計(jì)了Slacker,使用松耦合重排機(jī)制調(diào)整SSD內(nèi)部的子訪問請(qǐng)求,對(duì)寫密集、讀密集和讀寫均衡的應(yīng)用分別能縮短12%、6.5%和8.5%的響應(yīng)時(shí)間。文獻(xiàn)[15-16]中針對(duì)SCM提出了一個(gè)靈活的文件接口Aerie,以運(yùn)行時(shí)庫(kù)的形式將SCM暴露給用戶程序,使得在讀寫文件時(shí)無需與內(nèi)核交互;并實(shí)現(xiàn)了一個(gè)POSIX(Portable Operating System Interface of UNIX)標(biāo)準(zhǔn)的文件系統(tǒng)PXFS(ProXy File System),獲得了優(yōu)于Ramdisk上的Ext4和接近于Ramfs的性能;還實(shí)現(xiàn)了一個(gè)用于存儲(chǔ)key-value的文件系統(tǒng)FlatFS,相比現(xiàn)有的內(nèi)核文件系統(tǒng)Ramfs和Ramdisk的上Ext4能提高20%~109%的性能。文獻(xiàn)[10]中針對(duì)PCM設(shè)計(jì)了基于頁(yè)的高效管理方式,適應(yīng)上層應(yīng)用的訪問方式,首先使用雙向鏈表管理PCM中的頁(yè),再使用DRAM構(gòu)建了PCM頁(yè)的緩存并設(shè)計(jì)了基于進(jìn)入時(shí)間的淘汰算法,最后綜合頁(yè)遷移和交換信息優(yōu)化了PCM中頁(yè)的分配。文獻(xiàn)[17]使用較小容量的DRAM和PCM混合構(gòu)建內(nèi)存系統(tǒng),利用DRAM緩存PCM的部分?jǐn)?shù)據(jù),提高了混合內(nèi)存系統(tǒng)讀寫速度,減少了PCM的寫次數(shù)。
優(yōu)化基于寫保護(hù)的地址轉(zhuǎn)換策略方面:NVM存儲(chǔ)設(shè)備可以使用與DRAM相同的方式接入計(jì)算機(jī),并作為存儲(chǔ)器提供給操作系統(tǒng),現(xiàn)有針對(duì)DRAM的基于頁(yè)表保護(hù)機(jī)制無法解決內(nèi)核代碼野指針等給NVM存儲(chǔ)系統(tǒng)中數(shù)據(jù)造成永久損壞的問題,同時(shí)在多核處理器中不同計(jì)算核心之間在地址轉(zhuǎn)換時(shí)存在大量沖突嚴(yán)重影響了I/O性能。NOVA(Non-Volatile Memory Accelerated)[18]和PMFS[7]選擇在掛載期間將整個(gè)NVM映射為只讀狀態(tài)。通過禁用處理器的寫保護(hù)控制(CR0.WP)來打開一個(gè)寫入窗口(NVM代碼段)[19]。當(dāng)CR0.WP清除時(shí),在0其上這個(gè)表述對(duì)嗎?是數(shù)字0嗎?請(qǐng)明確運(yùn)行的內(nèi)核軟件可以寫入內(nèi)核地址空間中標(biāo)記為只讀的頁(yè)面。NVM寫入完成后,系統(tǒng)會(huì)復(fù)位CR0.WP并關(guān)閉寫入窗口。CR0.WP不會(huì)跨中斷保存,所以本地中斷會(huì)被寫入窗口中并被禁用。文獻(xiàn)[20]中提出了面向NVM的事務(wù)接口NVTM(Non-Volatile Transaction MemoriesNVTM的英文全稱是“non-volatile memories”嗎?請(qǐng)明確),將非易失存儲(chǔ)器直接映射到應(yīng)用程序的地址空間,允許易失和非易失數(shù)據(jù)結(jié)構(gòu)在程序中的無縫交互,從而在讀寫操作中避免操作系統(tǒng)的介入,提高了數(shù)據(jù)訪問性能。文獻(xiàn)[21]在虛擬內(nèi)存空間設(shè)計(jì)了新型文件系統(tǒng)SCMFS(Storage Class Memory File System),使用MMU(Memory Management Unit)和TLB(Translation Lookaside Buffer)實(shí)現(xiàn)虛擬地址和物理地址的轉(zhuǎn)換,簡(jiǎn)化了文件操作,減少了CPU開銷。HSCC(Hardware/Software Cooperative Caching請(qǐng)補(bǔ)充HSCC的英文全稱)[22]通過軟硬件協(xié)同管理的DRAM/NVM層次化異構(gòu)內(nèi)存系統(tǒng);通過Utility-based數(shù)據(jù)緩存機(jī)制僅緩存NVM熱頁(yè)緩存,提高了DRAM利用率;同時(shí)在頁(yè)表和TLB中建立虛擬頁(yè)到DRAM緩存頁(yè)的映射,并與Utility-based數(shù)據(jù)緩存機(jī)制一起在軟件層次實(shí)現(xiàn),降低了系統(tǒng)的硬件復(fù)雜度和存儲(chǔ)開銷。PMBD(Persistent Memory Block Driver)[23]將NVM映射到內(nèi)核虛擬地址空間,不同計(jì)算核心在訪問時(shí)使用對(duì)應(yīng)的私有映射,減少了TLB刷新和頁(yè)表項(xiàng)修改,避免了大容量NVM存儲(chǔ)設(shè)備對(duì)應(yīng)的大頁(yè)表所消耗的大量存儲(chǔ)器空間和管理時(shí)間開銷。
綜上所述,目前在針對(duì)NVM構(gòu)建存儲(chǔ)系統(tǒng)方面,主要考慮的是如何減少I/O系統(tǒng)軟件棧的時(shí)間開銷,發(fā)揮NVM設(shè)備高速讀寫特性,因此針對(duì)NVM設(shè)備的特性,有效地混合異步和同步I/O是提高NVM存儲(chǔ)系統(tǒng)I/O性能的有效途徑;同時(shí)多核環(huán)境中,內(nèi)核的私有映射可以確保NVM中數(shù)據(jù)免受意外的永久性破壞,但NVM存儲(chǔ)系統(tǒng)容量較大時(shí),TLB的命中率會(huì)受到較大影響,所以如何在確保解決多處理器映射沖突的情況下提高映射效率、降低軟件開銷值得本文作進(jìn)一步的研究。
2 支持高并發(fā)訪問NVM存儲(chǔ)系統(tǒng)的結(jié)構(gòu)
NVM存儲(chǔ)器件的讀性能接近DRAM,但其寫速度與DRAM相比還有數(shù)量級(jí)的差距;同時(shí)另外NVM存儲(chǔ)器件還存在寫壽命的問題,因此當(dāng)前的NVM存儲(chǔ)系統(tǒng)中仍然包含一定容量的DRAM,但現(xiàn)有的存儲(chǔ)系統(tǒng)使用單一的同步或異步策略管理所有訪問請(qǐng)求,難以適應(yīng)NVM存儲(chǔ)系統(tǒng)中讀寫性能差異和寫壽命的限制;同時(shí)NVM存儲(chǔ)系統(tǒng)的高I/O性能,使得處理器在訪問NVM存儲(chǔ)系統(tǒng)時(shí)完成邏輯和物理地址轉(zhuǎn)換的時(shí)間開銷也成為影響I/O性能的重要因素,特別是在多核處理器環(huán)境中,在使用沖突較少的私有映射時(shí)多個(gè)計(jì)算核心之間無法共享地址轉(zhuǎn)換信息,影響了地址轉(zhuǎn)換的效率,因此本文設(shè)計(jì)支持高并發(fā)訪問的NVM存儲(chǔ)系統(tǒng),其結(jié)構(gòu)如圖1所示。
支持高并發(fā)的NVM存儲(chǔ)系統(tǒng)中,主要包含同異步融合訪問請(qǐng)求管理模塊、寫緩存和地址轉(zhuǎn)換緩存。其中:同異步融合訪問請(qǐng)求管理模塊主要負(fù)責(zé)管理訪問NVM存儲(chǔ)系統(tǒng)的讀寫操作,根據(jù)NVM存儲(chǔ)系統(tǒng)的特性和訪問請(qǐng)求的特點(diǎn),提高訪問NVM存儲(chǔ)系統(tǒng)的I/O性能,減少訪問請(qǐng)求的響應(yīng)時(shí)間;寫緩存用于保存部分寫操作需要寫入NVM存儲(chǔ)系統(tǒng)的數(shù)據(jù);地址轉(zhuǎn)換緩存保存部分NVM存儲(chǔ)系統(tǒng)中邏輯地址和物理地址的轉(zhuǎn)換表,用于在多核環(huán)境中提高查找NVM存儲(chǔ)系統(tǒng)物理地址的速度。
3 同異步融合的訪問請(qǐng)求管理策略
由于NVM存儲(chǔ)器件的特性,使得NVM存儲(chǔ)系統(tǒng)的讀寫性能存在很大差異,這給如何管理NVM存儲(chǔ)系統(tǒng)中的訪問請(qǐng)求帶來了很大困難。本文設(shè)計(jì)了同異步融合的訪問請(qǐng)求管理策略。
首先使用DRAM構(gòu)建寫數(shù)據(jù)緩沖區(qū)、并用WBuffer表示,定義α表示判斷寫訪問請(qǐng)求的閾值,其處理訪問請(qǐng)求主要步驟的偽代碼如下。
此外使用LRU(Least Recently Used)策略管理寫數(shù)據(jù)緩沖區(qū),并使用一個(gè)獨(dú)立的線程定期將WBuffer中的數(shù)據(jù)寫入到NVM存儲(chǔ)系統(tǒng)中。
由此將NVM存儲(chǔ)系統(tǒng)的讀寫請(qǐng)求進(jìn)行了分離,使用同步機(jī)制完成讀操作,能利用NVM存儲(chǔ)系統(tǒng)讀速度接近DRAM的特性。同樣使用同步機(jī)制完成少量數(shù)據(jù)的寫請(qǐng)求,避免使用寫緩存存在的兩次寫操作;對(duì)數(shù)據(jù)量較大的寫請(qǐng)求,則運(yùn)用異步機(jī)制,使用DRAM構(gòu)建寫數(shù)據(jù)緩存,利用相比NVM存儲(chǔ)器件寫速度更高的DRAM快速完成數(shù)據(jù)寫操作,從而提高NVM存儲(chǔ)系統(tǒng)的寫性能;同時(shí)使用異步寫機(jī)制還能增強(qiáng)NVM存儲(chǔ)系統(tǒng)處理寫操作的并行性,提高寫操作的吞吐率。
4 面向多核處理器的地址轉(zhuǎn)換緩存策略
處理器在訪問NVM存儲(chǔ)系統(tǒng)時(shí),需要進(jìn)行NVM存儲(chǔ)空間邏輯地址和物理地址的轉(zhuǎn)換。由于NVM存儲(chǔ)系統(tǒng)的讀寫速度已經(jīng)接近于DRAM,使得NVM存儲(chǔ)系統(tǒng)中地址轉(zhuǎn)換所需時(shí)間開銷對(duì)其I/O性能的影響很大,特別是在使用多核處理器時(shí),為了保證NVM存儲(chǔ)系統(tǒng)上數(shù)據(jù)的一致性,多個(gè)計(jì)算核心在訪問NVM存儲(chǔ)系統(tǒng)時(shí)需要進(jìn)行加鎖,這嚴(yán)重影響了NVM存儲(chǔ)系統(tǒng)的I/O性能。NVM存儲(chǔ)系統(tǒng)空間私有映射為每個(gè)計(jì)算核心建立一個(gè)獨(dú)立的地址映射表,能降低不同計(jì)算核心訪問NVM存儲(chǔ)系統(tǒng)空間時(shí)的沖突,是當(dāng)前提高NVM存儲(chǔ)系統(tǒng)地址轉(zhuǎn)換效率的有效方式,但會(huì)造成NVM存儲(chǔ)系統(tǒng)所對(duì)應(yīng)邏輯地址空間的急劇膨脹,也使得多個(gè)計(jì)算核心之間無法共享地址轉(zhuǎn)換信息,從而影響了地址轉(zhuǎn)換的效率。
使用私有映射時(shí),多核處理器中不同核心所對(duì)應(yīng)NVM存儲(chǔ)系統(tǒng)的邏輯地址各不相同,但其與NVM存儲(chǔ)系統(tǒng)空間大小存在關(guān)聯(lián);NVM存儲(chǔ)系統(tǒng)中同一物理地址所對(duì)應(yīng)不同計(jì)算核心的邏輯地址之間互相可轉(zhuǎn)換,這為共享NVM存儲(chǔ)系統(tǒng)中地址轉(zhuǎn)換信息提供了可能。本文設(shè)計(jì)面向多核處理器的地址轉(zhuǎn)換緩存策略,利用NVM存儲(chǔ)系統(tǒng)的邏輯與物理地址轉(zhuǎn)換信息可共享特性,構(gòu)建面向多核處理器的可共享地址轉(zhuǎn)換緩存。使用Nsize表示NVM存儲(chǔ)系統(tǒng)的存儲(chǔ)空間大小,Lbegin表示某個(gè)計(jì)算核心邏輯地址空間的起始地址,Laddress表示NVM存儲(chǔ)系統(tǒng)內(nèi)部的邏輯地址,Paddress表示NVM存儲(chǔ)系統(tǒng)中內(nèi)部的物理地址,Lid表示多核處理器中某個(gè)計(jì)算核心的標(biāo)識(shí),Tcache表示面向多核處理器的地址轉(zhuǎn)換緩存。
面向多核處理器的地址轉(zhuǎn)換緩存使用鍵值對(duì)形式保存Laddress和Paddress之間的對(duì)應(yīng),并使用LRU策略進(jìn)行管理。在將地址轉(zhuǎn)換信息調(diào)入Tcache前,使用式(1)計(jì)算其邏輯地址logical_address所對(duì)應(yīng)的Laddress:
使用面向多核處理器地址轉(zhuǎn)換緩存策略后,處理器訪問NVM存儲(chǔ)系統(tǒng)時(shí)地址轉(zhuǎn)換的主要過程如下所示。
使用面向多核處理器地址轉(zhuǎn)換緩存策略,能避免在進(jìn)行私有映射后,多核處理器中不同計(jì)算核心之間無法共享NVM存儲(chǔ)系統(tǒng)邏輯地址的問題,通過共享邏輯地址和物理地址之間的轉(zhuǎn)換信息,實(shí)現(xiàn)多個(gè)計(jì)算核心之間在獲得物理地址信息時(shí)的共享:一方面避免每個(gè)計(jì)算核心均需處理物理地址相同的地址轉(zhuǎn)換;另一方面通過可共享的面向多核處理器地址轉(zhuǎn)換緩存進(jìn)一步減少了訪問NVM存儲(chǔ)系統(tǒng)時(shí)多個(gè)計(jì)算核心之間的沖突,從而能有效提高NVM存儲(chǔ)系統(tǒng)處理訪問請(qǐng)求的并行性,提高I/O性能,縮短響應(yīng)訪問請(qǐng)求的時(shí)間。相比TLB,本文所設(shè)計(jì)的面向多核處理器地址轉(zhuǎn)換緩存中地址轉(zhuǎn)換緩存鍵值對(duì)能被不同的計(jì)算核心所共享,在通過不同計(jì)算核心的簡(jiǎn)單計(jì)算即可獲得對(duì)應(yīng)的邏輯地址,從而避免TLB中多個(gè)計(jì)算核心無法共享緩存項(xiàng)的問題。
5 原型系統(tǒng)的實(shí)現(xiàn)
本文在64位的Linux平臺(tái)上構(gòu)建支持高并發(fā)訪問NVM存儲(chǔ)系統(tǒng)的原型,實(shí)現(xiàn)同異步融合訪問請(qǐng)求管理策略和面向多核處理器地址轉(zhuǎn)換緩存策略,并使用存儲(chǔ)系統(tǒng)通用測(cè)試工具Fio和能模擬應(yīng)用訪問特性的Filebench進(jìn)行測(cè)試,并與現(xiàn)有NVM存儲(chǔ)系統(tǒng)進(jìn)行比較。
當(dāng)前沒有商用的NVM存儲(chǔ)設(shè)備,在文獻(xiàn)[21]所實(shí)現(xiàn)的虛擬NVM存儲(chǔ)設(shè)備PMBD基礎(chǔ)上實(shí)現(xiàn)CNVMS的原型。其中的PMBD采用缺省配置,并關(guān)閉DRAM上的數(shù)據(jù)緩存,同時(shí)設(shè)置cache為write through模式,并在每次寫操作后插入一個(gè)寫屏障指令,保證NVM存儲(chǔ)系統(tǒng)中數(shù)據(jù)的強(qiáng)一致性,同時(shí)額外增加85ns的讀延遲和500ns的寫延遲模擬NVM的讀寫性能;使用多核處理器中每個(gè)計(jì)算核心私有映射的方式實(shí)現(xiàn)PMBD中邏輯地址與物理地址的映射,并在讀寫PMBD時(shí)采用使用邏輯塊號(hào)直接讀寫裸設(shè)備的方式縮短I/O系統(tǒng)軟件棧。此外修改Linux內(nèi)核,在內(nèi)核地址尾部預(yù)留20GB的內(nèi)核空間并掛載PMBD來模擬NVM存儲(chǔ)設(shè)備。
在此基礎(chǔ)上,修改PBMD的源代碼,增加同異步融合訪問請(qǐng)求管理模塊、寫緩存和地址轉(zhuǎn)換緩存構(gòu)建CNVMS,設(shè)置α的值為4KB,實(shí)現(xiàn)訪問NVM存儲(chǔ)系統(tǒng)讀寫訪問請(qǐng)求的分類管理,利用寫緩存縮短較大寫操作的完成時(shí)間開銷,利用地址轉(zhuǎn)換緩存進(jìn)一步壓縮I/O系統(tǒng)軟件棧的時(shí)間開銷,從而提高CNMVS的I/O性能和處理訪問請(qǐng)求的效率。
6 測(cè)試與分析
使用1臺(tái)服務(wù)器構(gòu)建了CNVMS的測(cè)試環(huán)境,其配置為: CPU為Four Intel Xeon E7-4830V2 2.2GHz,Memory為256GB,Disk為600GB SAS Disk+120GB SAS SSD,OS為Red Hat Enterprise 6.5。首先使用文件系統(tǒng)性能的通用測(cè)試工具Fio進(jìn)行測(cè)試,再使用能模擬不同應(yīng)用訪問特性的通用測(cè)試工具Filebench進(jìn)行測(cè)試,并將CNVMS的讀寫速度和IOPS與PMBD進(jìn)行比較。
6.1 順序讀寫時(shí)的測(cè)試與分析
將Fio設(shè)置為直接覆蓋式讀寫方式,設(shè)置線程數(shù)為8,訪問塊大小為4KB,使用同步(sync)和異步(libaio)兩種引擎,異步讀寫時(shí)I/O隊(duì)列深度分別設(shè)置為1和32,讀寫文件數(shù)分別為5000、10000、20000和30000,讀寫文件的大小分別為1KB、4KB和256KB。
首先測(cè)試順序?qū)憰r(shí)的I/O性能,測(cè)試結(jié)果如圖2(a)所示。從中可以發(fā)現(xiàn),CNVMS的順序?qū)懰俣仁冀K高于相同情況下的PMBD。在同步順序?qū)憰r(shí),CNVMS相比PMBD能提高2%左右的I/O性能;在異步順序?qū)憰r(shí),CNVMS能提高11%~22%的寫性能。相比同步順序?qū)?,異步順序?qū)懩芨玫匕l(fā)揮CNVMS的性能,這是因?yàn)橥綄憰r(shí)PMBD本身的I/O性能就較低,同步機(jī)制制約了CNVMS的完成寫操作的效率,影響了寫緩存作用的發(fā)揮,同時(shí)多個(gè)計(jì)算核心轉(zhuǎn)換地址時(shí)的沖突也很少。在異步模式下,順序?qū)?KB文件、I/O隊(duì)列深度為32時(shí),CNVMS相比PMBD所提高的寫性能最高,達(dá)到了22%,這表明CNVMS相比PMBD能提高完成大量并發(fā)順序?qū)懙乃俣龋啾菼/O隊(duì)列深度為1時(shí),CNVMS和PMBD在I/O隊(duì)列深度為32時(shí)的順序?qū)懶阅苁冀K較低,這說明在處理順序?qū)懭蝿?wù)時(shí)現(xiàn)有NVM存儲(chǔ)系統(tǒng)中并發(fā)性還有待提高。
使用相同的配置,測(cè)試PMBD和CNVMS的順序讀速度,結(jié)果如圖32(b)所示。從中可以發(fā)現(xiàn),與順序?qū)懙臏y(cè)試結(jié)果類似,CNVMS相比PMBD始終具有更高的順序讀速度。同步順序讀的速度,CNVMS相比PMBD能提高2%~7%;異步順序讀的速度,CNVMS能提高10%~17%。這表明CNVMS相比PMBD具有順序讀性能的優(yōu)勢(shì)。
使用相同的配置,測(cè)試PMBD和CNVMS的順序混合讀寫速度,讀寫混合比例是各50%,結(jié)果如圖42(c)所示。從中可以發(fā)現(xiàn),其結(jié)果基本與順序?qū)懟蜃x類似,但在使用異步模式時(shí)CNMVS相比PMBD所提高的I/O性能比例有所下降;而在使用同步模式時(shí)CNMVS相比PMBD所提高的I/O性能比例則有所提高。
6.2 隨機(jī)讀寫時(shí)的測(cè)試與分析
采用與6.1節(jié)中相同的配置,測(cè)試PMBD和CNVMS隨機(jī)寫性能,結(jié)果如圖53(a)所示。從中可以發(fā)現(xiàn),CNVMS相比PMBD能有效地提高隨機(jī)寫性能。在使用異步隨機(jī)寫模式時(shí),CNVMS相比PMBD提高了6%~17%;使用同步隨機(jī)寫模式時(shí),CNVMS相比PMBD提高了1%~4%。相比順序?qū)懶阅艿奶岣弑壤?,隨機(jī)寫性能的提高略低,這與一般采用緩存機(jī)制所取得的效果一致。
采用相同的配置,測(cè)試PMBD和CNVMS隨機(jī)讀性能,結(jié)果如圖63(b)所示。從中可以發(fā)現(xiàn),CNVMS相比PMBD能有效地提高隨機(jī)讀性能。在使用異步隨機(jī)讀模式時(shí),CNVMS相比PMBD提高了5%~16%;使用同步隨機(jī)讀模式時(shí),CNVMS相比PMBD提高了1%~18%。同樣相比順序讀性能的提高比例,隨機(jī)讀性能的提高略低。
使用相同的配置,測(cè)試PMBD和CNVMS的隨機(jī)混合讀寫速度,讀寫混合比例各50%,結(jié)果如圖73(c)所示。從中可以發(fā)現(xiàn),其結(jié)果基本與隨機(jī)寫或讀類似,但在使用異步模式時(shí)CNMVS相比PMBD所提高的I/O性能比例有所下降;在使用同步模式時(shí)CNMVS相比PMBD所提高的I/O性能比例則有所提高,這也與順序混合讀寫模式時(shí)的測(cè)試結(jié)果趨勢(shì)類似。
6.3 使用應(yīng)用負(fù)載時(shí)的測(cè)試與分析
應(yīng)用Filebench來模擬應(yīng)用對(duì)NVM存儲(chǔ)系統(tǒng)的訪問。首先使用Fileserver負(fù)載,模擬文件服務(wù)器中文件的共享、讀寫操作等情況,設(shè)置讀寫文件數(shù)為50000,目錄寬度為20,讀寫的線程數(shù)為50;同時(shí)為了更好地進(jìn)行比較與分析,將文件的大小分別設(shè)置為1KB、2KB、4KB和128KB,所有測(cè)試結(jié)果均是測(cè)試三次的平均值而得,降低測(cè)試過程中可能存在的誤差,測(cè)試結(jié)果如圖84所示。從中可以發(fā)現(xiàn),CNVMS的IOPS始終高于PMBD,提高了13%~15%,這是由于Fileserver負(fù)載中包含了較多的寫操作,從而使得CNVMS能較好地發(fā)揮寫緩存和地址轉(zhuǎn)換緩存的作用,有效提高處理訪問請(qǐng)求的速度。
再使用Filebench中的Webserver負(fù)載,用戶訪問Web服務(wù)器的情況;設(shè)置讀寫文件數(shù)為50000,目錄寬度為20,讀寫的線程數(shù)為100;同時(shí)為了更好地進(jìn)行比較與分析,將文件的大小分別設(shè)置為1KB、2KB、4KB和128KB,所有測(cè)試結(jié)果均是測(cè)試三次的平均值而得,降低測(cè)試過程中可能存在的誤差,測(cè)試結(jié)果如圖95所示。從中可以發(fā)現(xiàn),CNVMS相比PMBD同樣具有IOPS較高的優(yōu)勢(shì),能提高9%~11%的IOPS,這表明CNVMS能利用寫緩存和地址轉(zhuǎn)換緩存有效提高存儲(chǔ)系統(tǒng)處理訪問請(qǐng)求的速度,但相比Fileserver負(fù)載所提高IOPS的比例有所下降,這是由于Webserver負(fù)載主要模擬的Web文件的讀操作,寫操作的比例較少,降低了CNVMS中寫緩存的作用。
7 結(jié)語(yǔ)
NVM存儲(chǔ)系統(tǒng)具有較高的讀寫性能,這使得現(xiàn)有面向低速外存設(shè)備設(shè)計(jì)的I/O系統(tǒng)軟件棧成為影響存儲(chǔ)系統(tǒng)的重要瓶頸。針對(duì)NVM存儲(chǔ)系統(tǒng)存在的讀寫速度不均衡、寫壽命受限等問題,本文設(shè)計(jì)了同異步融合的訪問請(qǐng)求管理策略,在不影響讀和少量寫請(qǐng)求性能的同時(shí),使用DRAM構(gòu)建寫緩存提高數(shù)據(jù)量較大寫請(qǐng)求的執(zhí)行速度;設(shè)計(jì)了面向多核處理器地址轉(zhuǎn)換緩存策略,減少多核處理器環(huán)境下不同計(jì)算核心訪問NVM存儲(chǔ)系統(tǒng)時(shí)地址轉(zhuǎn)換的時(shí)間開銷,提高NVM存儲(chǔ)系統(tǒng)的I/O性能。最后實(shí)現(xiàn)了支持高并發(fā)訪問NVM存儲(chǔ)系統(tǒng)(CNVMS)的原型,使用Fio和Filebench進(jìn)行了隨機(jī)讀寫、順序讀寫、混合讀寫和實(shí)際應(yīng)用負(fù)載的測(cè)試,相比PMBD能提高1%~22%的I/O性能和9%~15%的IOPS,驗(yàn)證了算法的有效性。
當(dāng)前在管理寫緩存和地址轉(zhuǎn)換緩存時(shí),還是使用通用的LRU算法,下一步擬根據(jù)NVM存儲(chǔ)系統(tǒng)的特性,優(yōu)化寫緩存和地址轉(zhuǎn)換緩存的管理算法。
參考文獻(xiàn) (References)
[1] 陳祥,肖儂,劉芳.新型非易失存儲(chǔ)I/O棧綜述[J].計(jì)算機(jī)研究與發(fā)展,2014,51(S1):18-24.(CHEN X, XIAO N, LIU F. Survey on I/O stack for new non-volatile memory [J]. Journal of Computer Research and Development, 2014,51(S1):18-24.)
CARVALHO C. The gap between processor and memory speeds[C]// Proceedings of the 2002 IEEE International Conference on Control and Automation. Piscataway, NJ: IEEE, 2002: 51-58.
[2] Micron. Mobile LPDDR2-PCM. [EB/OL]. [2018-01-08]. http://www.micron.com/products/multichip-packages/pcm-based-mcp.
[3] CAULFIELD A M, COBURN J, MOLLOV T, et al. Understanding the impact of emerging non-volatile memories on high-performance, IO-intensive computing[C]// SC10: Proceedings of the 2010 ACM/IEEE High Performance Computing, Networking, Storage and Analysis. Piscataway, NJ: IEEE, 2010: 1-11.
[4] JO S H, KUMAR T, NARAYANAN S, et al. 3D-stackable crossbar resistive memory based on Field Assisted Superlinear Threshold (FAST) selector[C]// Proceedings of the 2014 International Electron Devices Meeting. Piscataway, NJ: IEEE, 2014:6.7.1-6.7.4.
[5] YANG J, MINTURN D B, HADY F. When poll is better than interrupt[C]// Proceedings of the 2010 USENIX Conference on File and Storage Technologies. Berkeley: USENIX Association, 2012:3-3.
[6] DEJAN V, WANG Q B, CYRIL G, et al. DC express: shortest latency protocol for reading phase change memory over PCI express[C]// Proceedings of the 2014 USENIX Conference on File and Storage Technologies. Berkeley: USENIX Association, 2014: 17-20.
[7] DULLOOR S R, KUMAR S, KESHAVAMURTHY A, et al. System software for persistent memory[C]// EuroSys 2015: Proceedings of the 10th European Conference on Computer Systems. New York: ACM, 2014: Article No. 15.
[8] OU J X, SHU J W, LU Y Y. A high performance file system for non-volatile main memory[C]// EuroSys 2016: Proceedings of the 11th European Conference on Computer Systems. New York: ACM, 2016: 18-21.
[9] LU Y Y, SHU J W, SUN L. Blurred persistence in transactional persistent memory[C]// Proceedings of the 2015 Mass Storage Systems and Technologies. Piscataway, NJ: IEEE, 2015: 1-13.
[10] JIN P Q, WU Z L, WANG X L, et al. A page-based storage framework for phase change memory[C]// Proceedings of the 2017 International Conference on Massive Storage Systems and Technology. Piscataway, NJ: IEEE, 2017: 152-164.
[11] CAMPELLO D, LOPEZ H, USECHE L, et al. Non-blocking writes to files[C]// Proceedings of the 2015 USENIX Conference on File and Storage Technologies. Berkeley: USENIX Association, 2015: 151-165.
[12] CAULFIELD A, MOLLOV T, EISNER L, et al. Providing safe, user space access to fast, solid state disks[J]. ACM SIGARCH Computer Architecture News, 2012, 40(1): 387-400.
[13] EISNER L A, MOLLOV T, SWANSON S J. Quill: exploiting fast non-volatile memory by transparently bypassing the file system: #CS2013-0991 [R]. San Diego: University of California, 2013: 127-134.
[14] NIMA E, MOHAMMAD A, ANAND S, et al. Exploiting intra-request slack to improve SSD performance[C]// Proceedings of the 2017 International Conference on Architectural Support for Programming Languages and Operating Systems. New York: ACM, 2017: 375-388.
[15] HARIS V, SANKARALINGAM P, SANKETH N, et al. Storage-class memory needs flexible interfaces[C]// Proceedings of the 4th Asia-Pacific Workshop on Systems. New York: ACM, 2013: Article No. 11.
[16] HARIS V, SANKETH N, SANKARLINGAM P, et al. Aerie: flexible file-system interfaces to storage-class memory[C]// Proceedings of the 2014 European Conference on Computer Systems. New York: ACM, 2014: Article No. 14.
[17] QURESHI M K, SRINIVASAN V, RIVERS J A. Scalable high performance main memory system using phase-change memory technology[J]. ACM SIGARCH Computer Architecture News, 2009, 37(3): 24-33.
[18] XU J, SWANSON S. NOVA: a log-structured file system for hybrid volatile/non-volatile main memories[C]// Proceedings of the 2016 USENIX Conference on File and Storage Technologies. Berkeley: USENIX Association, 2016: 22-25.
[19] Intel. Intel 64 and IA-32 architectures software developers manual [EB/OL]. [2018-01-11]. https://software.intel.com/en-us/articles/intel-sdm.
[20] COBURN J, CAULFIELD A, GRUPP L, et al. NVTM: a transactional interface for next-generation non-volatile memories[R]. San Diego: University of California, 2009.
[21] WU X, REDDY A L N. SCMFS: a file system for storage class memory[C]// Proceedings of the 2011 International Conference for High Performance Computing, Networking, Storage and Analysis. New York: ACM, 2011: 12-18.
[22] LIU H, CHEN Y, LIAO X, et al. Hardware/software cooperative caching for hybrid DRAM/NVM memory architectures[C]// Proceedings of the 2017 International Conference on High Performance Computing, Networking, Storage and Analysis. New York: ACM, 2017: Article No. 26.
[23] CHEN F, MESNIER M P, HAHN S. A protected block device for persistent memory[C]// Proceedings of the 2014 Mass Storage Systems and Technologies. Piscataway, NJ: IEEE, 2014: 1-12.