由于GC的存在,就有一個問題,用戶要寫入一定的數據,SSD為了騰出空間寫這些數據,需要額外的做一些數據的搬移,也就是額外的寫,最后導致的后果往往就是SSD往閃存中寫入的數據量比實際用戶寫入SSD的數據量多。因此,我們SSD中有個重要參數,就是寫放大(WA, Write Amplification):
對空盤來說(未觸發GC),寫放大一般為1,即用戶寫入多少數據,SSD寫入閃存也是多少數據量(這里忽略SSD內部數據的寫,如映射表的寫入)。在SandForce控制器出來之前,寫放大最小值為1。但是由于SandForce控制器內部具有實時數據壓縮模塊,它能對用戶寫入的數據進行實時壓縮,然后再把它們寫入到閃存,因此WA可以做到小于1。舉個例子,用戶寫入8KB數據,經壓縮后,數據變為4KB,如果這個時候還沒有垃圾回收,那么寫放大就只有0.5。
一說到SandForce的主控,過去好多年了,我對她的愛還是沒有減弱,女神一般的存在呀。。。
來看看GC觸發后,WA是怎么算的。以前面GC為例,我們挑選每個Die上的Block 0做垃圾回收:
一共36個方塊,其中有12個有效數據塊,我們做完垃圾回收后,需把這12個有效數據塊寫回:
后面還可以寫入24個方塊的用戶數據。因此,為了寫這24個方塊的用戶數據,SSD實際寫了12個方塊的原有效數據,再加上該24個方塊的用戶數據,總共寫入36個方塊數據,按照寫放大定義:WA= 36/24 = 1.5 。
寫放大越大,意味著額外寫入閃存的數據越多,一方面磨損閃存,減少SSD壽命,另一方面,寫入這些額外數據時會占用底層閃存帶寬,影響SSD性能。因此,SSD設計的一個目標不是沒有蛀牙,而是讓WA盡量小。減小寫放大,可以使用前面提到的壓縮辦法(主控決定),順序寫也可以減小寫放大(垃圾集中,但順序寫可遇不可求,取決于用戶workload),還有就是增大OP (這個可控)。
增大OP怎么就能減小寫放大? 先定義OP比例=(閃存空間-用戶空間)/用戶空間。
還是以前面SSD空間為例,SSD容量是180個小方塊,當OP是36個小方塊時,整個SSD閃存空間為216個小方塊,OP比例是36/180= 20%。那么180個小方塊的用戶數據平均分攤到216個小方塊時,每個小方塊的平均有效數據為180/216 = 0.83,一個閃存塊上的有效數據為0.83*9 = 7.5,也就是一個閃存塊上面平均有7.5個小綠塊和1.5個小紅塊。為了寫1.5個用戶數據方塊,需要寫9個方塊的數據(原有7.5個有效數據,加1.5個用戶數據),寫放大是9/1.5 = 6。
如果整個SSD閃存空間不變,還是216個小方塊,調整OP比例至72個小方塊 (犧牲用戶空間,OP比例50%),因此,SSD容量就變成144個小方塊。144個小方塊的用戶數據平均分攤到216個小方塊時,每個小方塊的平均有效數據為144/216 = 0.67,一個閃存塊上的有效數據為0.67*9 = 6,也就是一個閃存塊上面平均有6個小綠塊和3個小紅塊。為了寫3個用戶數據方塊,需要寫9個方塊的數據(原有6個有效數據,加3個用戶數據),寫放大是9/3 = 3。
從中看出,OP越大,寫放大越小。很好理解,OP越大,每個閃存塊有效數據越少,垃圾越多,因此需要重寫更少的數據,因此寫放大越小。同時,由于GC需要重寫的數據越少,SSD滿盤寫性能也越好。
當然,上面說的都是最壞情況(垃圾數據平均分攤到每個閃存塊上)。現實是,垃圾數據更多時候并不是平均分配到每個閃存塊上去,有些塊上的垃圾多,有些塊上的垃圾少,實際GC挑選閃存塊,是挑垃圾多的,因此,實際寫放大是小于前面的計算值的。
OP大小和寫放大以及SSD耐寫度的關系見圖:
圖1-1 OP大小對寫放大和耐寫度的影響
總結一下:
WA越小越好,因為越小意味著對閃存損耗越小,可以給閃存延年益壽,從而支持更多的用戶數據寫入量;OP越大越好,OP越大,意味著寫放大越小,意味著SSD寫性能越好。
影響寫放大的因素主要有:
OP: 我們已經看到,OP越大,WA越小;
用戶寫入的數據Pattern:如前面看到的,如果用戶都是順序寫入,GC做的量就少(極好情況下是整個閃存塊都是無效數據,只需擦除無需數據搬移),寫放大小;
GC策略:在挑選源閃存塊的時候,如果不是挑選有效數據最少(垃圾數據越多)的塊作為源閃存塊,就會增加寫放大;另外,控制后臺GC產生空閑閃存塊的數量,也能減小寫放大;
磨損平衡:為平衡每個閃存塊的擦除次數,需要數據的搬移;
Read disturb和Data Retention handling:數據搬移增加寫放大;
主控:帶壓縮和不帶壓縮的控制器肯定會影響寫放大;
Trim:有沒有Trim,對寫放大影響很大,后面Trim章節會介紹。
-
閃存
+關注
關注
16文章
1782瀏覽量
114895 -
數據
+關注
關注
8文章
7003瀏覽量
88944 -
SSD
+關注
關注
21文章
2858瀏覽量
117372
原文標題:SSD寫放大
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論