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

?

一種持久性內存文件系統(tǒng)數據頁的混合管理機制

2020-02-19 03:35陳游旻朱博弘韓銀俊屠要峰舒繼武
計算機研究與發(fā)展 2020年2期
關鍵詞:持久性拷貝線程

陳游旻 朱博弘 韓銀俊 屠要峰 舒繼武

1(清華大學計算機科學與技術系 北京 100084)2(中興通訊股份有限公司 南京 210012)

新型的非易失內存(non-volatile memory, NVM),例如相變存儲器(phase change memory, PCM)[1-3]、阻變存儲器(resistive random-access memory, ReRAM)[4]、3D-Xpoint等,能夠提供與DRAM相近的訪問性能,同時還能像磁盤一樣持久性地存儲數據.其中,通過內存接口與CPU相連,從而具有字節(jié)可尋址能力的非易失內存被稱作持久性內存(persistent memory, PM).2019年4月,英特爾公司正式發(fā)布了基于3D-Xpoint技術的傲騰持久性內存(Optane DC persistent memory)[5],這是迄今為止全球首款大規(guī)模商用的持久性內存器件,其單條最高容量可達512 GB,訪問帶寬及延遲相比于固態(tài)硬盤具有一到多個數量級的提升.

持久性內存為構建高效的存儲系統(tǒng)提供了性能保障.然而,現有的持久性內存存儲系統(tǒng)軟件或直接從傳統(tǒng)軟件改進而來[6-7],或依舊借鑒了面向傳統(tǒng)磁盤或固態(tài)硬盤的設計思想[8-10],從而導致持久性內存的硬件特性沒能被很好地利用,其硬件性能很難得到充分發(fā)揮.例如,傳統(tǒng)硬盤和固態(tài)硬盤的最小訪問粒度分別為扇區(qū)(512 B)和頁(4 KB),因此,傳統(tǒng)文件系統(tǒng)通常以4 KB的數據頁為最小粒度管理文件數據.然而,現有的持久性內存文件系統(tǒng)依舊沿用了該設計,以4 KB為最小粒度管理文件數據讀寫,并通過寫時復制機制(copy-on-write, CoW)保證數據寫入的原子性[9-10],使持久性內存的字節(jié)尋址特性未能得到充分發(fā)揮.通過應用負載分析,發(fā)現大量應用有一定比例的寫操作具有“不對齊”、“小寫”等特性,頁粒度的寫時復制機制將引入嚴重的數據寫放大效果,從而影響文件系統(tǒng)的整體性能.

本文提出了一種數據頁混合管理機制(hybrid data page management, HDPM),通過選擇性使用寫時復制機制和日志結構(log-structure)管理文件數據,從而避免非對齊寫或者小寫造成的寫放大問題.具體地,HDPM通過同時維護一個固定粒度的持久性內存塊和一個日志結構管理各文件數據頁:其將對齊的寫操作數據直接存入固定粒度的持久性內存塊中,而將非對齊的寫操作數據以日志項的形式追加到日志結構末尾,從而避免了傳統(tǒng)寫時復制機制引入的額外拷貝操作,消除了寫放大問題.為避免影響讀性能,HDPM引入逆向掃描機制,從日志結構末尾逆向掃描,從而保證在數據頁重構過程中不引入額外的數據拷貝.為避免日志結構無限增長,HDPM提出一種多重垃圾回收機制,在單個日志結構過大時,通過讀操作在重構數據頁時主動回收日志結構,當持久性內存空間受限時,則通過后臺線程使用免鎖機制異步釋放日志空間,從而消除垃圾回收對系統(tǒng)整體性能的影響.

本文的主要貢獻有3個方面:

1) 提出了一種數據頁混合管理機制HDPM,通過選擇性地將對齊和不對齊的數據存放到持久性內存塊和日志結構,避免了額外的數據拷貝開銷.

2) 提出逆向掃描機制降低文件讀取時的拷貝開銷;提出多重垃圾回收機制,高效回收日志空間.

3) 通過微觀和宏觀的實驗分析,HDPM相比于傳統(tǒng)途徑能顯著提升寫入性能.其中,小粒度寫入操作負載下,HDPM的寫入延遲比NOVA低58%;Filebench多線程測試顯示,HDPM相比于NOVA提升吞吐率33%.

1 背景介紹與研究動機

本節(jié)主要介紹持久性內存的基本硬件特性、文件系統(tǒng)中常見的原子性更新機制的基本工作原理,以及典型的應用負載分析.

1.1 持久性內存

持久性內存通過內存總線直接與CPU相連,CPU可通過內存指令直接讀寫持久性內存.持久性內存的出現徹底顛覆了傳統(tǒng)的存儲體系結構,從“內存+外存”的2級結構變成了內存級存儲的單層結構[11].持久性內存還帶來了2個層面的變化:1)讀寫不對稱性,持久性內存的寫性能往往不及讀性能,例如,傲騰持久性內存的讀帶寬最高可達39.4 GBs,而寫帶寬最高只有13.9 GBs[12];2)持久性-易失性邊界發(fā)生變化,傳統(tǒng)情況下需要通過軟件方式將數據從易失性內存(dynamic random-access memory, DRAM)搬運到持久性的磁盤或固態(tài)硬盤,而在持久性內存架構下,該邊界位于CPU緩存和持久性內存之間,且數據到達持久性內存的過程完全由硬件控制.CPU會通過打亂內存讀寫操作來提升訪存性能,因此,數據到達持久性內存的順序往往并不能按照程序寫入的次序進行,彼此有依賴關系的數據寫入會因為亂序執(zhí)行導致掉電故障時出現不一致的情況.為此,需要額外執(zhí)行強制緩存刷新指令(如clflushopt,clwb等)將數據主動逐出緩存.然而,這些緩存刷寫指令開銷大,對系統(tǒng)性能影響十分嚴重.

1.2 文件原子性更新機制

為保證文件數據在發(fā)生系統(tǒng)崩潰或斷電故障時要么寫入完成,要么未執(zhí)行,文件系統(tǒng)需要額外的機制來保證其原子執(zhí)行.常見的原子性更新機制包括日志(journal)、寫時復制、日志結構(log-structure)等.

其中,日志方式將存儲空間分成數據區(qū)和日志區(qū),在更新數據前,先將舊版本或新版本數據寫入日志,待持久化完畢后再原地更新數據.若在此過程中發(fā)生故障,可根據日志狀態(tài)重做或撤回寫入操作,實現數據更新的原子性.日志機制的缺陷是所有的數據均需寫2次,對寫性能影響嚴重.圖1展示了寫時復制機制的過程,該方案需將原數據頁中未修改的數據先拷貝到新的數據頁中,然后再將新寫入的數據寫到新數據頁中.該方案在對齊寫場景下性能優(yōu)異,避免了所有的拷貝開銷;然而,針對非對齊寫,其額外拷貝開銷甚至可能比日志方式還高.日志結構與日志機制完全不同:日志結構將整個存儲空間組建成一個日志,而不是像日志機制一樣將存儲空間劃分為數據區(qū)和日志區(qū);進而,所有的更新數據都被追加到日志末尾,并借助相應的索引結構引導數據讀取.為防止日志任意增長,還需要垃圾回收機制消除日志中的舊版本數據.在基于磁盤的日志結構文件系統(tǒng)中,每次追加日志項時仍需要按頁對齊,額外拷貝無法完全消除;然而,在字節(jié)可尋址的持久性內存中無需再按頁對齊日志項,日志結構可以緊湊地排布在持久性內存中,因而避免任何額外拷貝.

Fig. 1 Copy-on-write mechanism圖1 寫時復制機制

1.3 負載分析

為理解寫時復制機制在真實應用中造成的影響,我們進一步分析了多個真實負載的數據寫入特性.如圖2所示,其橫坐標代表對一個4 KB數據頁實際更新的數據量大小,縱坐標代表其累計分布(CDF).觀察可見,Iphoto,Usr1,Usr2等負載具有超過30%的寫操作為非對齊寫,而Facebook和Twitter也具有10%左右的非對齊寫操作,僅TPCC表現出良好的對齊寫特性.通過一定的真實負載分析,我們發(fā)現真實負載均不同程度地存在非對齊寫操作,現有的寫時復制機制將引入額外的拷貝開銷.

Fig. 2 CDF of in-page update size圖2 頁內更新數據大小累積分布圖

2 HDPM設計

本節(jié)首先描述HDPM的系統(tǒng)整體架構,然后逐一介紹HDPM的設計細節(jié),具體包括混合數據頁管理機制,基于逆向掃描的文件讀取流程,以及高效的多重垃圾回收機制.

2.1 系統(tǒng)架構

圖3上半部分展示了HDPM的系統(tǒng)總體架構:應用程序通過POSIX標準讀寫接口訪問文件系統(tǒng),其中,混合數據頁管理模塊(2.2節(jié))用于處理文件寫入流程,逆向掃描讀取模塊(2.3節(jié))用于處理文件讀取流程.持久性內存空間被切分成固定大小的持久性內存塊,用于存放數據頁和元數據.為方便實現,文件的inode采用了塊映射機制,即為每個數據頁存放一個映射條目(如圖3下部分).與傳統(tǒng)的塊映射機制不同的是,每個映射條目包含2個指針,分別指向一個寫時復制頁和一個日志結構,用于支持混合的數據頁管理.當然,HDPM不局限于使用塊映射機制進行數據塊索引,廣泛使用的范圍索引(extent)方式同樣適用于HDPM,本文將不再贅述.上述日志結構由一個或多個持久性內存塊串接而成,當日志結構空間不足時,將分配一個新的內存塊串接到日志尾部,用于存放新的數據.當日志結構的長度超過閾值,或剩余空間不足時,將觸發(fā)多重垃圾回收機制(2.4節(jié)),選擇性地在前臺或后臺清除日志結構引入的舊版本數據.

Fig. 3 Overall architecture of HDPM圖3 HDPM總體架構

2.2 混合數據頁管理

混合數據頁管理旨在選擇性利用寫時復制頁和日志結構存儲寫入數據,從而避免額外的冗余拷貝開銷.

當寫入的數據恰好整頁對齊,HDPM直接通過寫時復制機制存儲數據:首先從空閑空間中分配1個新的數據頁,將數據寫入新數據頁,并通過硬件指令將所寫數據從CPU緩存逐出,從而實現數據的持久化存儲;然后將映射表對應映射條目的第1個指針指向新的數據頁,使得新寫入數據可以被其他讀者讀取到;最后將舊數據頁釋放回收.可以注意到,該過程未發(fā)生任何額外的拷貝開銷,且數據可原子地從舊版本切換到新版本(原子地修改指針),崩潰一致性得到保障.

當寫入數據不能整頁對齊,HDPM則將數據追加到日志結構中.圖4描述了日志結構的布局,它是由若干個持久性內存塊串接而成.每個日志結構的起始位置預留了一個日志頭指針,用于指向最后一個有效日志項.特別地,日志項使用了倒序排布方式,即元數據放置在數據之后,用于支持逆向掃描文件讀取(2.3節(jié)).每個日志項的元數據包含2個字段,分別為日志項包含的數據在文件數據塊中對應的偏移和大小.向日志結構追加數據時,首先在日志末尾初始化一個日志項,將數據、元數據拷貝到該日志項,然后更新日志頭指針指向最新的位置.當日志空間不夠時,則重新申請一個新的內存塊,并鏈接到日志尾部.通過引入該日志結構,在發(fā)生非對齊寫操作時依舊無需執(zhí)行額外的拷貝操作,且更新原子性得到保證.值得注意的是,當一個數據頁發(fā)生過一次或多次非對齊寫之后,如果緊接著執(zhí)行一次整頁對齊的寫操作,則整個日志空間將變?yōu)榕f數據,因此日志空間可以被釋放回收.

Fig. 4 Layout of log-structure圖4 日志結構布局圖

HDPM引入的日志結構與傳統(tǒng)日志式文件系統(tǒng)(log-structured file system, LFS)[13]完全不同:LFS將整個磁盤組織成一個全局大日志,所有文件數據均追加到日志末尾,相反,HDPM將每個數據頁組織成一個小日志.在未對某數據頁發(fā)生非對齊寫時,其對應的日志結構為空,因此,HDPM不引入額外的空間浪費.該設計具有3方面的優(yōu)勢:

1) 多核并發(fā).傳統(tǒng)的全局大日志在慢速磁盤場景下可以工作得很好,這是因為磁盤內部的旋轉式機械部件天然地支持順序訪問,這與順序地將數據追加到日志尾部的訪問模式完全吻合.然而,持久性內存可以支持更高的并發(fā),且隨機和順序訪問性能差異不明顯,如果依舊使用全局大日志抽象持久性內存空間,多個線程將從同一個日志頭部競爭存儲空間,嚴重影響擴展性.相反,HDPM為每個數據頁配備一個日志結構,多個線程之間的競爭概率將大幅降低,能夠更好地利用持久性內存高帶寬特性.

2) 文件讀取性能影響小.傳統(tǒng)日志式文件系統(tǒng)或需要在內存中構建復雜的索引結構,用于輔助查找日志中的目標數據,或需要多次日志跳躍查找,這極大地限制了文件讀取的性能.HDPM的混合數據頁管理機制無需額外的索引機制,且避免了大量的日志掃描,僅需從一個小日志中便可拼合出最新數據.

3) 垃圾回收.傳統(tǒng)的日志式文件系統(tǒng)需要全局掃描磁盤檢測盤內垃圾占比,并挑選垃圾比例最高的數據塊進行合并整理,以騰出空閑空間.此過程將引入大量的掃描操作,垃圾回收開銷較高,且影響前臺應用的運行.相比之下,為每個數據頁配備一個日志結構具有更好的數據局部性:執(zhí)行垃圾回收時只需挑選出最長的日志,將內部有效數據合并,并寫到寫時復制頁即可,無需額外的騰挪過程,垃圾回收的過程將更加簡潔高效(2.4節(jié)).

2.3 基于逆向掃描的文件讀取

HDPM的另一個設計原則是在引入日志結構后不影響正常的文件讀取性能.根據2.2節(jié)所述,數據頁在寫時復制頁和日志結構中的新舊程度具有如下關系:日志結構尾部的數據比日志結構頭部的數據要新,且日志結構頭部的數據比寫時復制頁中的數據要新.因此,一種直觀的數據讀取方案為:首先將寫時復制頁中的數據拷貝到用戶緩沖區(qū),然后在日志中從頭至尾掃描,將相關的日志項拷貝到緩沖區(qū),直至日志末尾.然而,當該數據頁發(fā)生大量的重復寫入時,日志結構中將有多個日志項的數據彼此重疊,從而造成額外的拷貝開銷,降低文件讀取性能.

為解決該問題,HDPM引入一種逆向掃描的文件讀取方案.HDPM將日志結構的內存塊鏈接方式設計為雙向鏈表,并將日志項進行倒序排布,用于支持文件讀取時從日志尾部向頭部掃描,從而避免上述的額外拷貝開銷.具體而言,首先根據讀請求的大小及偏移確定是否包含當前日志項,如果包含,則將其拷貝到用戶緩沖區(qū),并記錄已讀取區(qū)間;否則,從日志結構前移一個日志項并重復判斷.若當前日志項在讀取區(qū)間內,且之前已經記錄該區(qū)間已經被成功讀取,則直接忽略該日志項,這是因為日志尾部的數據是最新的版本,無需額外拷貝舊版本數據.當記錄的已讀取區(qū)間完全覆蓋了讀請求的覆蓋區(qū)間,則停止掃描并返回數據.若掃描完整個日志結構依舊無法覆蓋整個讀區(qū)間,則進一步從寫時復制頁中讀取相應數據.

2.4 多重垃圾回收機制

為避免各數據頁對應的日志結構增長過快,占用過多的持久性內存空間,需要及時將日志結構進行合并整理,消除文件舊版本數據,并回收持久性內存空間.然而,傳統(tǒng)的日志清理機制需要通過掃描存儲設備探測垃圾數據,并通過鎖機制強制阻塞前臺服務,從而實現安全的垃圾回收過程,該過程會嚴重影響系統(tǒng)性能.為此,HDPM提出一種多重垃圾回收機制,其包括在正常讀寫流程中的機會性垃圾回收和后臺免鎖模式的垃圾回收.

如2.2節(jié)所述,在正常寫操作過程中,當發(fā)生整頁對齊寫操作時,可直接將對應日志空間進行回收,這將一定程度上緩解日志的空間占用.進一步,HDPM還在讀操作中引入機會性垃圾回收流程.在HDPM執(zhí)行正常的數據頁讀取時,首先檢查其對應的日志結構長度,若該日志結構超過某閾值,則對該數據頁進行完整的逆向讀取,整理出最新版本的數據頁信息,并寫回到寫時復制頁,同時回收相應的日志空間.此過程會一定程度影響當前讀操作的性能,然而,通過定期整理過長的日志結構,有助于提升后續(xù)的數據讀取性能.

上述前臺垃圾回收機制只能回收部分的持久性內存空間,因此還需要專門的后臺垃圾回收機制.為避免傳統(tǒng)垃圾回收機制阻塞文件系統(tǒng)正常讀寫流程,HDPM引入一種基于Epoch技術[14]的免鎖垃圾回收方法.如2.2節(jié)所述,HDPM在更新文件時,可以通過修改指針將數據從舊版本原子地切換到新版本,因此,后臺垃圾回收機制同樣可以使用原子指令修改指針,用于日志結構的合并整理及回收.然而,后臺的垃圾回收機制使用免鎖機制回收持久性內存塊,而不阻塞文件系統(tǒng)讀寫流程,有可能前臺的讀線程正在讀取已經被回收的持久性內存區(qū)域.此過程中如果已被回收的內存塊迅速被重新分配,并用于服務新的數據寫入,則讀線程可能讀到錯誤的數據.Epoch技術正是用于避免上述問題,其具體實現流程如下.

HDPM引入一個全局的Epoch計數器,其初始值為0,同時為每個正在訪問文件系統(tǒng)的進程分配一個本地計數器.每當各進程發(fā)起系統(tǒng)調用開始訪問文件系統(tǒng)之前,首先將全局計數器與本地計數器的值進行比對,如果不相等,則將本地計數器設置為與全局計數器相等.后臺垃圾回收線程將所有的空閑持久性內存塊通過2個空閑鏈表進行管理,分別對應到當前的Epoch值和上一個Epoch值.后臺線程定期執(zhí)行垃圾回收:每次執(zhí)行垃圾回收時,首先將全局寄存器加1,然后將回收的空閑塊增加到當前活躍的空閑鏈表中.當所有進程的本地計數器都為最新值時,上一次活躍的空閑鏈表內所包含的數據頁將不再有進程訪問,此時可以安全地被重新分配并使用.在實際回收過程中,后臺線程根據各日志結構的長度確定回收的優(yōu)先級別,即優(yōu)先回收長度較大的日志結構.

通過上述Epoch機制,垃圾回收過程完全無鎖化,因而不會阻塞前臺系統(tǒng)執(zhí)行,其對系統(tǒng)性能影響極小.

2.5 討 論

HDPM引入了混合數據頁管理、基于逆向掃描的文件讀取機制以及多重垃圾回收機制.這些技術一定程度給文件系統(tǒng)帶來了額外的計算開銷,但是,這些開銷相比于其帶來的性能提升十分微小.例如,引入的混合數據頁管理只需要CPU通過寫入的尺寸和偏移進行一次額外的邏輯判斷(納秒量級);同時,維護一個日志結構的開銷與維護傳統(tǒng)的CoW機制的開銷相當,而這種做法的效果卻是有效降低持久性內存的數據寫入量(微妙量級).同樣,逆向讀取避免數據的額外拷貝(微妙量級),而反向掃描的開銷所占總體執(zhí)行時間(納秒量級)的比例很小.多重垃圾回收機制是HDPM相比于NOVA額外引入的開銷.然而,多重垃圾回收能夠同時在前臺和后臺進行.其中,大量的垃圾回收操作能夠直接被讀操作吸收,即在讀取文件數據頁的過程中自然地完成垃圾回收操作,而非常少的一部分垃圾數據留給了后臺進行回收.同時,HDPM僅在空閑(系統(tǒng)負載低)的情形下執(zhí)行后臺回收.綜上,多重垃圾回收技術基本不影響文件系統(tǒng)的前臺處理性能.

3 系統(tǒng)實現

HDPM包含的技術可以廣泛地應用到現有的持久性內存文件系統(tǒng)中.作為示例,本文基于NOVA[10]實現了HDPM的各技術細節(jié).

NOVA將每一個inode組織為一個日志結構,因此,HDPM依然沿用NOVA的設計,僅將映射表的每個條目改為使用2個指針.NOVA在常規(guī)情況下并不會掃描inode的日志結構進行元數據查詢,而是同時在DRAM中為每個文件構建一棵Radix樹,用于映射表的索引查詢.因此,HDPM也同時在每個Radix樹的葉子節(jié)點額外增加一個指針,用于指向各數據頁的日志結構.

為保證文件系統(tǒng)崩潰一致性,HDPM需要嚴格按照順序持久化已經更新的數據.與NOVA相似,HDPM使用Non-temporal指令持久化數據,使用clflushopt指令持久化指針.其中,Non-temporal指令可以繞過CPU緩存,實現數據的即時持久.在更新數據和更新指針之間,添加mfence指令,用于強制執(zhí)行持久化的順序性,保證數據的一致性更新.

4 實 驗

本節(jié)將從微觀測試、宏觀測試、關鍵技術3個方面對比HDPM和現有系統(tǒng),并詳細分析其性能差異.

4.1 實驗平臺

本實驗使用的實驗平臺配置信息如表1所示.特別地,本實驗使用了Intel最近推出的Optane DC持久性內存作為非易失內存存儲介質,其單條容量為256 GB,總容量達768 GB.為兼容持久性內存設備,相應的CPU、主板、BIOS均為專門配備.Optane可配置為2種工作模式,分別為APP-Direct模式和內存模式.由于文件系統(tǒng)需直接管理持久性內存空間,因此本實驗采用APP-Direct模式.HDPM基于NOVA進行改造,因此本實驗將重點與NOVA[10]進行性能對比.作為參考,HDPM同時也與Ext4,Ext4-DAX[6]等傳統(tǒng)的文件系統(tǒng)進行了對比.

Table 1 Platform Configuration表1 實驗平臺配置信息

4.2 微觀測試

Fig. 5 Latency of write syscall with varying IO sizes圖5 寫系統(tǒng)調用在不同IO尺寸下的延遲

Fig. 6 Latency of read syscall with varying IO sizes圖6 讀系統(tǒng)調用在不同IO尺寸下的延遲

4.3 Filebench

為測試HDPM在真實負載下的性能表現,本文選取了Filebench[15]中的2個代表性負載Webproxy和Varmail進行測試.本文采用了與文獻[10]中相同的配置參數進行測試:Webproxy負載的文件平均大小為64 KB,讀操作平均IO大小為1 MB,寫操作為16 KB,讀寫比例為5∶1,總文件數量為10萬個.Varmail負載的文件平均大小為32 KB,讀操作平均IO大小為1 MB,寫操作為16 KB,讀寫比例為1∶1,總文件數量為10萬個.可見,Webproxy為讀密集型負載,而Varmail則包含大量小尺寸同步寫操作.在測試過程中,通過逐漸增加客戶端線程數量來測試Filebench的總體吞吐.我們發(fā)現,當線程增加到10之后,總性能不再上升,這一方面是因為Optane持久性內存的寫入帶寬有限,在10個線程后其帶寬趨于飽和;另一方面,Filebench原本針對磁盤設計,其內部同于性能統(tǒng)計、數據測試的模塊本身設計擴展性不好.因此,本實驗未給出10個線程之后的實驗數據.

從圖7中可見,Ext4-JBD的性能最差,而其他3個系統(tǒng)的總體吞吐十分接近,這主要是因為Webproxy為讀密集負載,系統(tǒng)間性能差異不明顯.

Fig. 7 Webproxy throughput with varying number of threads圖7 不同線程下Webproxy吞吐

同時,從圖8中可以發(fā)現,在寫密集應用下,NOVA的總體吞吐遠高于Ext4-DAX和Ext4-JBD,這主要是因為NOVA專門針對持久性內存重新設計了軟件棧以及數據管理策略.而HDPM則表現出最好的性能,在10個線程下HDPM的總體吞吐比NOVA高33%.這主要是因為Varmail包含了較多非對齊寫入操作,HDPM有效降低了非對齊寫入操作引入的拷貝開銷.同時可以注意到,在線程數量增大時,HDPM相比于NOVA的性能優(yōu)勢更加明顯.這主要受Optane DC帶寬的影響.在線程數量較少情況下,Optane DC的帶寬不是瓶頸,HDPM與NOVA之間的性能差異完全取決于各操作延遲.由于Filebench本身具有較大的軟件開銷,文件系統(tǒng)層次的操作延遲占比不高,HDPM優(yōu)化技術帶來的延遲降低歸結到系統(tǒng)層面效果不明顯.但當線程數量上升之后,HDPM與NOVA之間的性能差異變大.HDPM通過混合的數據頁管理能夠更加高效地處理非對齊小寫,從而有效降低了數據總寫入量,節(jié)省了Optane DC的寫入帶寬,此時Optane DC的帶寬決定了總吞吐,因而HPDM擁有更加明顯的性能優(yōu)勢.

Fig. 8 Varmail throughput with varying number of threads圖8 不同線程下Varmail吞吐

Fig. 9 Read latency with varying number of overwrites圖9 不同重復寫次數下的讀取延遲

4.4 關鍵技術分析

為理解在讀操作中引入的逆向掃描技術帶來的性能優(yōu)勢,我們關閉了這一技術,并實現了HDPM wo opt版本,該方案將之前的逆向掃描改為順序掃描,該掃描過程在遇到多次重復寫時,會依次將目標數據拷貝到用戶緩沖區(qū),從而造成額外開銷.本實驗中,依次對文件中的某數據塊重復寫入N次,然后測試2個版本的系統(tǒng)的讀取性能,其評測結果如圖9所示.可發(fā)現,在重復寫入次數變化時,HDPM的讀取延遲基本不發(fā)生變化,而HDPM wo opt的讀取延遲顯著上升.因此,在數據讀取中,有效降低額外的拷貝次數對提升系統(tǒng)整體讀取性能有極大的幫助.

5 相關工作

持久性內存直接通過內存總線接入處理器,存儲訪問延遲極低,且處理器可以按照字節(jié)粒度訪問持久性內存.這些硬件上的差異促使了新的文件系統(tǒng)設計.

1) 一致性保障.微軟研究院于2019年提出的字節(jié)尋址的持久性內存文件系統(tǒng)BPFS[8],通過短路影子頁(short-circuit shadow paging)方式提供數據的原子性更新,同時提出一種硬件Epoch提交策略降低緩存刷新的開銷.英特爾公司于2014年提出的NVM直寫文件系統(tǒng)PMFS[9],采用原子的原地更新及細粒度日志機制保證元數據更新的原子性,通過undo日志和寫時復制的混合方式保證數據的一致性.加州大學圣地亞哥分校將傳統(tǒng)日志結構文件系統(tǒng)進行重新設計和擴展,研制出日志結構持久性內存文件系統(tǒng)NOVA[10].NOVA將每個文件inode組織為一個日志,因此,其對單個inode的修改操作可以直接在日志尾部原子追加;重命名等操作通常涉及對多個日志結構的更新,因此NOVA還采用輕量級的日志技術保證多操作的原子性.與PMFS相同,NOVA對文件數據使用寫時復制技術.雖然上述系統(tǒng)在不同程度上結合了持久性內存的字節(jié)尋址特性,并通過不同的手段解決了文件系統(tǒng)一致性管理.然而,上述所有系統(tǒng)均使用了基于頁粒度的寫時復制技術,這會造成額外的拷貝開銷.北京航空航天大學提出的noseFS[16]則通過構建額外的B+樹維護更細粒度的持久性內存頁,從而降低寫時復制機制引入的拷貝開銷,然而,B+樹的維護管理同樣造成額外的時間及空間開銷.

2) 降低軟件開銷.操作系統(tǒng)管理的頁緩存在持久性內存中將造成冗余的數據拷貝,嚴重影響性能.因而,Ext4,BtrFS等傳統(tǒng)文件系統(tǒng)均兼容了直接訪問模式(direct access, DAX).通過這種方法,應用程序可以直接訪問非易失內存中存儲的文件數據,而不需要將數據額外拷貝到頁緩存中.PMFS,NOVA等專門為持久性內存設計的文件系統(tǒng)則通過內存映射的方式繞開了文件系統(tǒng)頁緩存.然而,操作系統(tǒng)本身依舊十分笨重,其系統(tǒng)調用引入的現場切換開銷,虛擬文件系統(tǒng)(virtual file system, VFS)引入的軟件開銷等在面向持久性內存時也變得愈發(fā)嚴重.因此,維斯康星大學麥迪遜分校于2014年提出一種用戶態(tài)的持久性內存文件系統(tǒng)Aerie[17],從而使得應用程序可以直接在用戶態(tài)訪問文件數據,而不引入額外的操作系統(tǒng)開銷.Strata[18]同樣也是一個用戶態(tài)文件系統(tǒng),不同的是,Strata同時管理多種存儲設備(硬盤、固態(tài)硬盤、持久性內存等),通過合理的調度,Strata在性能、容量等方面均表現優(yōu)異.

3) 多核擴展性.在多核場景下,如何設計可擴展的文件系統(tǒng)以充分利用持久性內存的高吞吐特性變得十分重要.NOVA在改造傳統(tǒng)日志式文件系統(tǒng)時,重點考慮了多核擴展性.NOVA將每個inode組織為一個日志,而不是仿造傳統(tǒng)方式構建一個全局大日志,通過這種方式,有效避免了并發(fā)向單個日志追加記錄難擴展的問題.另外,NOVA僅將元數據放入日志結構,而數據部分則單獨管理,這有效降低了垃圾回收的開銷.最后,NOVA將空閑空間切分到不同的處理器核心,不同線程在分配內存空間時,僅從本地空閑空間進行分配,從而避免了額外的全局鎖開銷.通過上述設計,NOVA具有極強的擴展性.HDPM也采用了類似的設計理念,通過多個日志結構降低競爭.

6 結 論

持久性內存展現出與傳統(tǒng)存儲設備(如硬盤、固態(tài)硬盤)完全不同的硬件特性,這為構建高效的持久性內存存儲系統(tǒng)提出了新的挑戰(zhàn).本文提出一種混合數據頁管理機制HDPM,通過選擇性使用寫時復制機制和日志結構管理文件數據,充分發(fā)揮持久性內存字節(jié)可尋址特性,從而避免了傳統(tǒng)單一模式在遇到非對齊寫或者小寫造成的寫放大問題.為保持讀性能不受影響,HDPM引入逆向掃描機制,在重構數據頁時不引入額外數據拷貝.HDPM還提出一種多重垃圾回收機制,在不同階段、不同時機進行高效的日志合并整理.實驗顯示,HDPM能夠顯著提升寫入性能.

猜你喜歡
持久性拷貝線程
5G終端模擬系統(tǒng)隨機接入過程的設計與實現
實時操作系統(tǒng)mbedOS 互斥量調度機制剖析
淺析體育賽事售票系統(tǒng)錯票問題的對策研究
文化拷貝應該如何“拷”
文化拷貝應該如何“拷”
鋼鐵行業(yè)持久性有機污染物的生成與控制研究
淺議城市照明建設應注意的問題
組織身份:概念、測量及研究視角
影子與我
Java的多線程技術探討
呼伦贝尔市| 黄陵县| 宣威市| 江门市| 鹤壁市| 南汇区| 邢台县| 江门市| 汾西县| 梁山县| 桃园县| 老河口市| 佛教| 海安县| 鹤壁市| 渑池县| 平昌县| 南川市| 兴仁县| 兴义市| 钟祥市| 自治县| 奎屯市| 盐源县| 民县| 洪湖市| 西盟| 怀化市| 图木舒克市| 年辖:市辖区| 莲花县| 曲水县| 阜南县| 石棉县| 尼勒克县| 济南市| 美姑县| 措勤县| 喜德县| 商河县| 介休市|