SSD去重:建模和量化分析

原文:J. Kim. Deduplication in SSDs: Model and Quantitative Analysis.

數據去重技術能夠有效減小寫負載,節約存儲空間,進而減小垃圾回收的次數,增長垃圾回收和損耗均衡算法的效率,對SSD的壽命有很好的改進。這篇來自MSST’2012的文章站在了 CAFTLCA-SSD的肩膀上,進一步探討了數據去重對SSD性能的影響,也就是探討數據去重是否能夠改進SSD的寫延遲。

數據去重爲SSD帶來了不少的好處,可是存在兩大挑戰:1.數據去重的開銷問題,一般SSD的資源有限,只有ARM7或ARM9等低端CPU和少許內存,這和備份歸檔環境有很大不一樣;2.SSD的典型負載是否有足夠的重複數據?

爲了回答這些問題,做者爲SSD設計了一個數據去重框架,由指紋生成器、指紋管理、映射管理組成。和CAFTL、CA-SSD同樣,分別針對映射表(CAFTL和CA-SSD)、指紋索引(LRU)、哈希計算瓶頸(硬件邏輯和取樣法)進行討論,並提出瞭解決方案。

針對9個負載的實驗代表,平都可以達到17%的重刪率,SHA-1硬件邏輯的延遲是80us,平都可以改善延遲15%;當SSD裝配了較高端CPU,好比ARM9時,軟件實現的取樣哈希法也能夠得到很好的效果;數據去重平都可以提升2.4倍壽命。

1.概述




圖1展現了SSD的基本結構,以及本文設計的數據去重框架。數據去重的功能組件(指紋生成器、指紋管理和映射管理)都位於FTL。指紋生成器的設計對性能的影響很大,本文分別提出了硬件和軟件的實現方案;指紋管理的問題在於應該維護多大的索引,傳統的備份和歸檔應用會維護完整的索引,但SSD的內存有限,所以本文采用一種相似CA-SSD的LRU索引;FTL的映射表很容易將多個邏輯地址映射到同一個物理地址來實現數據去重,但存在的問題是當垃圾回收時,如何快速地更新映射表,本文采用了CA-SSD的反向映射法。

2.建模


本文對數據去重開銷進行建模,尋找去重開銷、去重率和寫延遲的關係。給定去重開銷,要想改進寫延遲,必須知足多少去重率。

無去重SSD的寫延遲以下,FMprogram是寫入數據的延遲,MAPmanage是更新映射表的延遲。



而裝備去重的SSD,其寫延遲以下。



FPgenerator是計算指紋的時間,FPmanage是查詢指紋的時間,DUPrate是去重率。比較兩個公式,去重SSD要想改善寫延遲,必須知足:



這個等式表示,當去重率高於這個水平時,就能夠改善SSD的寫延遲。實際上,SSD的寫延遲還必須考慮垃圾回收的時間,而數據去重能夠減小垃圾回收的次數和時間,所以去重率實際上能夠更低。當寫數據的時間越長,所須要的去重率就越低。例如,當寫數據的時間爲 1300us,去重的開銷是256us,去重率最低須要16%才能得到性能提高。如今最主要的問題是如何減小去重的開銷。

3.指紋計算


做者測試了三種CPU計算SHA-1的延遲,以及SHA-1硬件邏輯的延遲,如圖4。可見SHA-1的開銷仍是很大的,結合公式3,可知使用MicroBlaze和ARM7的SSD不管如何不可能由於去重而得到性能提高。



做者在Xilinx Virtex6 XC6VLX240T FPGA之上實現了SHA-1硬件邏輯,其計算延遲只有80us。它由五部分組成:主控制單元,負責管理整體邏輯;IO控制單元,負責與CPU交互;雙端口BRAM,存儲4KB臨時數據;SHA-1核心,實現標準SHA-1算法;哈希比較器,檢查兩指紋是否相同。使用Verilog HDL 2001進行RTL編碼(對FPGA、Verilog HDL、RTL編碼徹底不懂啊,因此所有抄下來了)。採用硬件邏輯,只須要5%的去重率就能夠提高性能。



使用硬件邏輯增長了產品的價格,對於裝備了ARM9或者更高端CPU的SSD,採用軟件方法也是有機會得到性能提高的。經過實驗,發現重複數據具備相似TVL(CA-SSD)的 時間局部性,即大多數重複數據的到達時間很是接近,基於此提出了抽樣哈希法(和CAFTL的抽樣有些不同)。圖7是取樣法的圖示,它利用了SSD的寫緩衝區,大概32MB,最多能夠緩衝8000個page。當SSD接收到一個寫請求,首先從page內偏移q的位置取樣p(>=20)字節,使用這p字節做爲哈希索引插入page到某個bucket中,所以相同p字節被插入同一個bucket。當緩衝區滿時,只須要對長度大於1的bucket進行哈希計算,預期能夠減小大量沒必要要的計算開銷。緩衝區的大小會對去重率產生影響。


4.指紋索引


使用的是和CA-SSD幾乎同樣的LRU索引,按照指紋的產生時間組織隊列。圖8是實驗結果,當LRU索引的規模超過2048時,可以很好挖掘全部負載的重複數據。


5.映射表


去重將邏輯地址到物理地址的映射關係變爲n-to-1,這裏最大的挑戰是如何優化垃圾回收:移動一個合法page,須要更新n個邏輯地址的映射關係。而優化垃圾回收問題又能夠分爲兩個問題,定位邏輯地址和更新映射關係。

本文並無提出新的映射表設計,而是比較了CAFTL和CA-SSD,兩者作出了不一樣的權衡。 CAFTL和CA-SSD的比較一文已經將兩者進行了對比。CAFTL的讀操做須要額外訪問二級映射表;同時,CAFTL移動一個合法page只須要更新一個位置,而CA-SSD須要更新全部對應的邏輯page的映射關係。CA-SSD垃圾回收的效率取決於iLPT表中鏈表的平均長度,經過實驗發現,大多數page的重複次數不超過3,所以做者選擇了CA-SSD。

6.實驗


實驗所用9個負載的重複數據特性如圖10所示,去重率從4%到51%,平均17%。



實驗的重點是檢查去重對寫延遲的影響,圖12比較了裝備SHA-1硬件邏輯的數據去重和無去重SSD,以及引發垃圾回收時的結果。能夠看出對於9個負載,數據去重SSD的寫延遲都下降了;有垃圾回收時,數據去重對寫延遲的改進更加明顯,可見數據去重能夠加速垃圾回收。



圖14是軟件實現取樣哈希的效果。14(a)顯示了取樣法損失的去重率,大概能得到徹底哈希64%的重刪率。14(b)比較了無去重、取樣哈希、徹底哈希的寫延遲,這裏使用的CPU是ARM9,取樣哈希比徹底哈希的寫延遲更小,和無去重差很少。

相關文章
相關標籤/搜索