999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于文件系統特征的SLC緩存方案

2022-11-07 10:57:28李明江
計算機應用與軟件 2022年10期
關鍵詞:系統

李明江 陳 仁

1(黔南民族師范學院計算機與信息學院人工智能與大數據應用技術研究所 貴州 都勻 558000) 2(中科院上海技術物理研究所中國科學院紅外探測與成像技術重點實驗室 上海 200083)

0 引 言

近年來,由于基于閃存(主要是NAND Flash)的固態存儲設備具有速度快、延時低、功耗低、抗震、體積小等優點[1],無論是在消費領域,還是在企業數據中心,抑或是在移動領域(如eMMC、UFS等),固態存儲設備都得到廣泛的使用。但與傳統磁性硬盤相比,固態存儲設備在容量和價格方面卻不占優勢。為解決這個問題,閃存一直朝著高密度方向發展,從早期的2D SLC(單個存儲單元存儲1比特數據的二維閃存),到現在廣泛使用的3D TLC(單個存儲單元存儲3比特數據的三維閃存),存儲密度越來越高,單比特數據成本越來越低,使得固態存儲設備在容量和價格方面與傳統硬盤相當。但是,閃存存儲密度提升的同時,閃存的性能和壽命也是越來越低。

為解決TLC性能差的問題,SLC緩存算法被廣泛應用在固態存儲設備。傳統SLC緩存算法[2-4]思路是,在固態存儲設備中,一些TLC塊(Block)配置成SLC緩存使用,用戶寫入數據時,如果當前設備中有空閑SLC緩存,數據則會被優先寫入到這些緩存中。當系統空閑時,這些SLC緩存的數據會被搬到TLC塊中。SLC緩存算法雖然能提升固態存儲設備突發寫入(Burst write)性能,但是由于數據先寫入到SLC,然后還是要搬到TLC,這會引入額外的寫放大,影響系統的壽命(Endurance)。另外,當SLC緩存耗盡或即將耗盡的時候,為釋放SLC緩存空間,SLC數據到TLC空間數據搬移的垃圾回收會被觸發,這時系統寫入性能會出現斷崖式下降。

為減小SLC緩存算法對存儲設備壽命的影響,有學者提出基于用戶數據冷熱程度使用SLC緩存[5-6],即當用戶寫入的數據是熱數據時,熱數據會被寫入到SLC緩存,而對冷數據,數據則被直接寫入到TLC塊中。這些算法滿足了熱數據寫入的高性能需求,同時減少了數據從SLC到TLC的搬移,減小了系統的寫放大,提升了存儲設備的壽命。但是,當SLC緩存耗盡的時候,由于需要釋放SLC緩存空間,SLC緩存垃圾回收導致用戶寫入性能變差的問題沒有得到解決或者緩解。

用戶數據一般都是以文件的形式存儲在存儲設備上的。本文在前人研究的基礎上,從文件系統特征出發,根據數據的類型和特征,把用戶數據、文件元數據(meta)、日志數據(Journal)寫入到不同的存儲空間。該算法不僅改善了系統突發寫入性能,而且改善了SLC緩存空間耗盡下系統的寫入性能,同時兼顧了系統的壽命。

1 相關工作

1.1 閃存類型

閃存根據其存儲密度,一般分為SLC、MLC和TLC。SLC(Single Level Cell),指閃存每個存儲單元存儲1比特的數據;MLC(Multiple Level Cell)和TLC(Triple Level Cell)則是指每個存儲單元能存儲2比特和3比特的數據。同SLC相比,在同樣尺寸的晶元上,MLC和TLC存儲的數據量分別是SLC的2倍和3倍。閃存密度的提升增加了閃存的容量,降低了閃存單比特的成本。但是,閃存密度提升帶來的不利因素則是閃存性能的下降以及閃存壽命的降低。

從表1可以看到,TLC寫入性能只有SLC的1/3,這就是為什么需要SLC緩存來提升系統突發寫入性能的原因。在擦寫次數(壽命)方面,TLC只有SLC的1%,TLC的耐寫性大大減小,因此在使用SLC緩存提升性能的同時,還需要考慮到SLC緩存對TLC壽命的影響,SLC緩存算法應該盡量減小對系統壽命的影響。

表1 SLC、MLC和TLC參數對比表[7]

1.2 SLC緩存算法分析

為了解決TLC等高密度閃存性能差的問題,SLC緩存設計被應用到固態存儲設備中。在一個基于TLC的固態存儲設備中,一部分TLC配置成SLC工作模式,數據會被臨時寫到SLC緩存中,然后這些數據最終需要存儲到TLC閃存空間。典型的SLC緩存架構如圖1所示。

假設用戶寫入的總數據量為T,其中寫入到SLC緩存的數據量占比為x(0≤x≤1),則直接寫入到TLC中的數據量占比為1-x。在釋放SLC緩存空間的時候,假設從SLC到TLC搬動的有效數據占比為y(0≤y≤1)。寫入到閃存的數據包括:

(1) 用戶寫到SLC緩存的數據:T×x。

(2) 用戶直接寫到TLC的數據:T×(1-x)。

(3) SLC緩存垃圾回收寫入到TLC的數據:T×x×y。

總共寫入到閃存的數據量為T×(1+x×y),因此SLC緩存機制引入的寫放大為:

WA=T×(1+x×y)/T=1+x×y

(1)

可以看出,SLC緩存會導致額外的寫放大(1+x×y),具體來說,寫入到SLC緩存的數據量(x)越多以及SLC緩存垃圾回收時搬動的有效數據(y)越多,則寫放大越大,對系統壽命影響越大,反之亦然。

在SLC數據向TLC遷移的垃圾回收時,搬動的數據越少(即y越小),則寫放大越小,對系統性能和壽命影響越小。而該數據與緩存在SLC的數據類型緊密相關。

(1) 如果冷數據(即不經常更新的數據,比如視頻、圖像、音頻等類型數據)寫入SLC緩存空間,這些數據在SLC緩存期間幾乎不會被更新或重寫,在騰出SLC空間的時候,有多少數據寫入到SLC緩存,就幾乎需要原封不動地把這些數據遷移到TLC。這意味著對冷數據,y接近1,冷數據寫入到SLC緩存對系統性能和壽命影響最大。

(2) 如果數據是熱數據(即被頻繁更新的數據),這些數據在寫入到SLC緩存的時候,很大概率會被更新,因此在釋放SLC緩存空間時,往TLC搬動的數據占比y會遠小于1。因此熱數據適合寫入到SLC緩存空間,性能提升的同時,對系統性能和壽命影響很小。

(3) 特別地,有些系統數據(比如文件系統的日志文件),系統寫入的時候是在一個存儲空間循環寫入,這些數據如果被寫入到SLC緩存空間,會導致整個SLC塊被變成無效,因此在回收SLC緩存空間的時候,不需要做真正意義上的垃圾回收,只需執行SLC塊的擦除操作,無須數據的搬移,即y=0。對于這種數據類型,即使觸發垃圾回收,因為無須數據搬移,系統性能和壽命都能同時保證。但這前提是必須避免這些數據和熱數據混合寫入到SLC緩存,否則在做垃圾回收的時候,還是需要把熱數據搬移到TLC空間。因此對諸如日志文件類型的數據,應該寫入到單獨的SLC緩存空間。

1.3 日志文件系統[8]

本文以主流的EXT4文件系統為例,來分析文件數據類型。EXT4是第四代擴展文件系統,是Linux系統下的日志文件系統,其數據類型包括用戶數據、文件元數據(meta data)和日志(journal)數據。文件元數據是文件系統管理文件所需的數據,而日志數據則是用來確保文件數據一致性而加入的數據。

EXT4有三種日志模式,分別為:journal、ordered、writeback。

(1) journal模式。journal模式提供了完全的數據塊和元數據塊的日志,所有的數據都會被先寫入到日志里,然后再寫入存儲設備上。在文件系統崩潰的時候,日志就可以進行重放,把數據和元數據帶回到一個一致性的狀態。journal模式性能是三種模式中最低的,因為所有的數據都需要日志來記錄。

(2) ordered模式。ordered模式下,EXT4文件系統只提供元數據的日志,但它邏輯上將與數據更改相關的元數據信息與數據塊分組到一個稱為事務的單元中。當需要把元數據寫入到存儲設備上的時候,與元數據關聯的數據塊會首先寫入。也就是數據先寫入,再做元數據的日志。

(3) writeback模式。writeback模式下,當元數據提交到日志后,數據可以直接被提交到存儲設備,即會做元數據日志,數據不做日志,并且不保證數據比元數據先寫入到磁盤。

對用戶數據和元數據來說,包含有頻繁更新的數據(即熱數據)和不頻繁更新的數據(即冷數據),取決于用戶存儲的數據類型;而對日志數據來說,主機為它分配一個獨立的邏輯地址空間,文件系統在這個空間連續寫入并循環使用。

本文將針對文件系統類型,尤其是日志文件系統特點,設計一種全新的SLC緩存方案,不僅能提升系統性能,而且能改善在回收SLC緩存空間期間的系統性能,同時又能減小SLC緩存給存儲系統壽命造成的影響。

2 方案設計與實現

2.1 非日志文件數據的存儲

從前面SLC緩存算法分析可得出結論,熱數據和冷數據分開存儲,即熱數據先寫到SLC緩存再回收到TLC空間,冷數據直接寫到TLC空間,這樣不僅能滿足熱數據的寫入性能需求,而且能減小SLC緩存算法對系統壽命影響。冷熱數據的區分,可以在主機端來區分,比如:對視頻、圖像、語音等數據,主機端根據文件的后綴名,把它標識為冷數據,對其他數據則把它標識為熱數據。主機在寫這些數據的時候,在相應的寫入命令中加上標識。

在設備端,固件根據數據的冷熱標識,把數據寫到不同的閃存空間,如圖2所示。

寫入到SLC緩存空間的數據,當SLC緩存滿了的時候,需要對SLC緩存做垃圾回收,即把SLC塊上的有效數據搬到TLC空間,如圖3所示。

熱數據由于被頻繁更新,因此在SLC塊中,很多數據都是無效的,釋放出SLC緩存空間需要搬動的有效數據很少,即式(1)中的y很小,因此能減小SLC緩存算法對存儲性能和壽命的影響。

2.2 日志文件數據的存儲

注意到文件系統中日志數據的特殊性,即順序寫入和循環寫入的特點,固態存儲設備為其再分配一個獨立的SLC存儲空間,避免和其他非日志的數據寫在同一個閃存空間。這樣做的好處是,在釋放日志SLC緩存空間的時候,可以快速回收,無須數據的搬移。

因此,在冷熱數據分開存儲的基礎上,SLC空間被分成兩部分,一部分用以緩存熱數據,一部分存儲日志數據,如圖4所示。

如圖5所示,假設日志文件邏輯空間為LBA 0-MAX,主機按邏輯地址依次寫入日志數據,當邏輯空間寫滿后,主機則又從起始邏輯地址(即LBA 0)寫入。假設每個SLC塊能寫入100個邏輯塊的數據,當寫滿SLC塊blockn的時候,block 0的數據則全部變成無效。在回收SLC空間的時候,無須做任何數據的搬移,只需擦除block 0就能得到一個空閑的SLC塊。

對日志文件之外的數據,由于寫入的隨機性和不確定性,因此無法做到零數據搬移的垃圾回收。前述的冷熱數據分開存儲到不同的閃存空間,能最大化減小垃圾回收時的數據搬移;但對日志數據,根據其寫入的特殊性(順序循環寫入),存儲設備為其分配獨立的日志文件數據緩存空間,做到了零數據搬移的垃圾回收,不僅避免了緩存空間垃圾回收對系統性能的影響,而且避免了閃存緩存空間垃圾回收引入的寫放大(y=0)。

2.3 主機和設備實現

在主機端,設備驅動層根據數據類型,給不同的數據打上標志:圖像、視頻和音頻數據(根據文件后綴名)標識為冷數據;日志文件標識為日志數據;其他數據類型標識為熱數據。

在主機往設備寫數據的時候,文件數據類型標志包含在寫入命令當中。

在設備端,實現了相應的SLC緩存算法,主要包括:

1) 為不同的數據類型分配不同的閃存空間(熱數據SLC緩存空間、日志SLC緩存空間和主TLC存儲空間)。

2) 根據主機寫入命令中的數據類型標志,把數據寫入到對應的閃存空間。

3) SLC緩存空間垃圾回收算法。

(1) 對日志SLC緩存空間,無須數據搬移就能釋放SLC空間,只需執行前臺垃圾回收。

(2) 對熱數據SLC緩存空間,只做后臺垃圾回收,即系統空閑的時候釋放SLC緩存空間;如果主機在寫入的時候沒有足夠多SLC緩存空間,熱數據會被直接寫入到主TLC空間。不做前臺SLC緩存垃圾回收,是出于性能考慮,因為直接寫TLC性能會比在做垃圾回收時的性能要好,從而避免了系統寫入性能出現斷崖式下降。

基于文件系統特征的SLC緩存方案如圖6所示。

3 實驗數據和分析

3.1 實驗設置和測試負載

實驗目的是驗證新的SLC算法在不同的日志模式下,對系統性能的提升以及對系統壽命(寫放大)的改善。

主機端使用文件系統為EXT4的Linux操作系統,并加入新的驅動程序,以支持文件系統數據類型的甄別,并在寫入命令中打上數據類型標記。

設備端是一塊基于PCIe3.0x2的120 GB SSD開發板,后端四個閃存通道,每個閃存通道各掛了一片32 GB的3D TLC閃存。SSD開發板固件分別實現了兩種SLC算法:

(1) 傳統SLC緩存算法:分配4 GB SLC緩存空間,主機寫入的數據(無數據分類)會被先寫到SLC緩存,如果緩存耗盡,數據直接寫入到TLC空間;在系統空閑的時候,SLC緩存會被后臺垃圾回收釋放空間。

(2) 新的SLC緩存算法:分配2 GB SLC緩存空間用以存儲日志數據;分配4 GB SLC緩存空間存儲熱數據;冷數據沒有SLC緩存空間,直接寫入到TLC空間。熱數據寫入的時候,如果有可用的SLC緩存空間,數據會被寫入到SLC空間,否則,熱數據則被直接寫入到TLC空間。在系統空閑的時候,SLC緩存會被后臺垃圾回收釋放空間。

3.2 性能數據對比

我們使用Filebench來生成各種實際工作負載,然后測試對應負載下的性能數據。結果如表2、圖7、圖8所示。

表2 不同的測試負載

從測試結果來看,無論是在Journal模式還是在Ordered模式下,本文提出的SLC緩存方案較傳統SLC方案在性能上都有不同幅度的提升,尤其是在日志數據占比比較大的情況下,比如Varmail在Journal模式下,性能提升達到50%,這得益于獨立的日志數據SLC緩存空間的使用。獨立的日志SLC緩存空間,在寫入日志數據的時候,即使在SLC緩存耗盡的情況下,由于其無須做真正的數據搬移就能釋放SLC空間,保證了日志數據總是能寫入到SLC空間,從而提升了整個系統性能。

3.3 寫放大數據對比

測試使用FIO生成如表3所示測試序列。

表3 FIO測試負載

基于上面的負載,分別做兩個測試:一個測試是腳本不斷運行,其間沒有空閑時間;另一個測試是腳本中間加入足夠多的空閑時間。兩者的差異是,前者由于設備一直處于工作狀態,沒有后臺操作來清空熱數據的SLC緩存空間,所以冷熱數據幾乎都會被直接寫到TLC空間;而后者,設備有空閑時間,它會在空閑的時候把SLC緩存上的數據搬到TLC空間,所以主機寫入的熱數據,幾乎全部會寫入到SLC緩存中。測試結果如圖9、圖10所示。

與傳統SLC緩存方案相比,本文提出的基于文件系統特征的SLC緩存方案能大大減小寫放大,從而提升閃存的壽命。同樣的SLC緩存方案,我們可以看到,當系統有空閑時間的時候,系統寫放大會比沒有空閑時間的時候要大。那是因為,當系統沒有空閑的時候,主機寫入的數據在SLC緩存寫滿后,會被直接寫到TLC中;而當系統有足夠多的空閑時間,主機寫入的數據(熱數據)幾乎被全部寫入到SLC緩存中,之后被后臺垃圾回收把數據從SLC緩存空間搬移到TLC空間。根據前面的分析(式(1)),主機寫入到SLC緩存空間的數據越少,SLC緩存導致的寫放大越小,反之亦然,實驗結果和理論分析相符。

4 結 語

傳統SLC緩存方案解決了基于TLC存儲空間突發寫入性能不足的問題,但它會引入比較大的寫放大,從而影響系統寫入壽命;另外,當SLC緩存耗盡的時候,系統性能急劇下降的問題沒有得到解決。本文提出的基于文件系統特征的SLC緩存方案,把文件數據分為熱數據、冷數據和日志數據,尤其是針對日志數據使用獨立的SLC緩存空間,大大減小了系統的寫放大,同時也提升了當SLC緩存空間耗盡下的系統寫入性能。值得注意的是,即使對非日志文件系統,本文提出的熱數據進入SLC緩存、冷數據直接寫入到TLC主空間的策略,也能減少不必要的數據(沒有性能需求的數據)寫入到SLC緩存空間,這樣有助于改善熱數據性能和減小系統的寫放大。

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 91亚洲精品国产自在现线| 日韩经典精品无码一区二区| 欧美国产在线精品17p| 国产成人精品高清不卡在线| yjizz视频最新网站在线| 超碰aⅴ人人做人人爽欧美| 亚洲第一区欧美国产综合| 亚洲福利一区二区三区| 欧美精品啪啪| 日韩成人高清无码| 亚洲精品午夜天堂网页| 91香蕉视频下载网站| 成年女人18毛片毛片免费| 蝴蝶伊人久久中文娱乐网| 九九久久精品免费观看| 亚洲成人精品久久| 99这里只有精品6| 国产精品久久久久久久伊一| 玖玖精品在线| 不卡无码网| 亚洲人成影视在线观看| 成人永久免费A∨一级在线播放| 中文字幕一区二区人妻电影| 欧洲日本亚洲中文字幕| 亚洲男人在线| 亚洲av无码牛牛影视在线二区| 国产免费福利网站| 男女精品视频| 99精品影院| 免费无码AV片在线观看国产| 国产成人精品一区二区三在线观看| 亚洲欧美在线精品一区二区| 色综合中文综合网| 国产日本欧美在线观看| 老熟妇喷水一区二区三区| 久久亚洲高清国产| 婷婷综合在线观看丁香| 国产成人免费手机在线观看视频| 亚洲无线国产观看| 国产精品.com| 精品国产aⅴ一区二区三区| 99视频在线观看免费| 全部无卡免费的毛片在线看| 五月婷婷中文字幕| 亚洲天堂视频网站| 国产精品短篇二区| 欧美综合成人| 国产精品嫩草影院视频| 操美女免费网站| 丁香婷婷久久| 成人中文字幕在线| 亚洲AV色香蕉一区二区| 国产精品黄色片| 亚洲精品无码人妻无码| 国产91精选在线观看| 色天天综合| 91亚洲精选| 91麻豆精品国产91久久久久| 亚洲熟女中文字幕男人总站 | 伊人网址在线| 国产成人凹凸视频在线| 老熟妇喷水一区二区三区| 1024国产在线| 午夜a视频| 日韩精品一区二区三区免费| 国产在线专区| 国产成人综合亚洲欧美在| 亚洲一区二区三区在线视频| 欧洲熟妇精品视频| 免费看a级毛片| 欧美日韩亚洲国产| 91综合色区亚洲熟妇p| 国产欧美在线观看一区| 久久黄色视频影| 天堂中文在线资源| 亚洲高清日韩heyzo| 国产美女精品一区二区| 亚洲日韩高清在线亚洲专区| 亚洲青涩在线| 亚洲第一香蕉视频| 国产成人在线小视频| 国产精品爽爽va在线无码观看|