WA(Write Amplification)寫入放大

WA(Write Amplification)寫入放大:

WA是閃存及SSD相關的一個極爲重要的屬性。由於閃存必須先擦除才能再寫入的特性,在執行這些操作時,數據都會被移動超過1次。這些重複的操作不單會增加寫入的數據量,還會減少閃存的壽命,更吃光閃存的可用帶寬而間接影響隨機寫入性能。WA這個術語在2008年被Intel公司和SiliconSystems公司(於2009 年被西部數據收購)第一次提出並在公開稿件裏使用。
舉個最簡單的例子:當要寫入一個4KB的數據時,最壞的情況是一個塊裏已經沒有乾淨空間了,但有無效的數據可以擦除,所以主控就把所有的數據讀到緩存,擦除塊,緩存裏更新整個塊的數據,再把新數據寫回去,這個操作帶來的寫入放大就是: 實際寫4K的數據,造成了整個塊(共1024KB)的寫入操作,那就是放大了256倍。同時還帶來了原本只需要簡單一步寫入4KB的操作變成:閃存讀取 (1024KB)→緩存改(4KB)→閃存擦除(1024KB)→閃存寫入(1024KB),共四步操作,造成延遲大大增加,速度變慢。所以說WA是影響 SSD隨機寫入性能和壽命的關鍵因素。
以100%隨機4KB來寫入,目前的大多數SSD主控,在最壞的情況下WA可以達到100以上。如果是100%持續的從低LBA寫入到高LBA的話,WA可以做到1,實際使用中寫入放大會介於這兩者之間。
用戶還可以設置一定的OP來減少WA,假設你有個128G的SSD,你只分了64G 的容量使用,那最壞情況下的寫入放大就能減少約3倍。
許多因素影響SSD的WA。下面列出主要的因素,以及它們如何影響WA。 1. 垃圾回收(GC)--- 雖然增加了寫入放大,但是速度有提升。這個比較特殊的算法用來移動,合併,擦除閃存塊來提升效率。(詳見GC章節)2. 預留空間(OP)--- 減少寫入放大,好。(預留空間越大,寫入放大越低)在SSD上劃出部分空間留給主控做優化,是用戶不能操作的空間。(詳見OP章節)3. Trim 開啓後可以減少寫入放大,好。一個ATA指令,由操作系統發送給SSD主控,告訴主控哪些數據是無效的並且可以不用做垃圾回收操作。(詳見Trim章節)4. 可用容量減少寫入放大,好。(可用空間越大,寫入放大越低)用戶使用中沒有用到的空間。(需要有Trim支持,不然不會影響寫入放大。)5. 安全擦除 Secure Erase 減少寫入放大,好。ATA安全擦除命令用來清除在磁盤上的所有用戶數據,這個指令會讓SSD回到出廠時的性能(最優性能,最少寫入放大),但是隨着使用時間變長,GC操作恢復後,寫入放大又會慢慢增加回來。許多軟件使用ATA安全擦除指令來重置磁盤,最著名的爲HDDErase。對SSD來說,重置就是(除了OP區域內的部分私有區域外的)全盤擦除操作(邏輯1),瞬間即可完成清除所有數據讓SSD回到初始狀態。但要注意,每操作一次,全盤壽命P/E次數減1。6. 持續寫入(Sequential writes)減少寫入放大,好。理論上來說,持續寫入的寫入放大爲1,但是某些因素還是會影響這個數值。7. 靜態/動態數據分離(Separating Static and Dynamic Data)減少寫入放大,好。高端SSD主控制器支持靜態和動態數據的分離處理,此操作要求SSD主控制器對LBA裏經常寫入(動態數據,熱數據)和不經常寫入(靜態數據,冷數據)的數據塊進行歸類,因爲如果塊裏同時包含了靜態和動態數據,在做GC操作的時候會爲了改寫其實沒必要的靜態數據而增加寫入放大,所以把包含靜態數據的塊歸類後,因爲不常改寫,寫入放大就減少了。但是遲早SSD主控會把這些靜態的數據轉移到別的地方來進行磨損平衡。(因爲靜態數據佔着的數據塊一直不改寫,編程次數低於平均值的話,會造成顆粒磨損不平衡,違背了磨損平衡,確實非常矛盾的。)8. 隨機寫入(Random writes)提高寫入放大,不好。隨機寫入會寫入很多非連續的LBA,將會大大提升寫入放大。9. 磨損平衡(WL)直接提高寫入放大,不好。確保閃存的每個塊被寫入的次數相等的一種機制。(詳見WL章節)
發佈了35 篇原創文章 · 獲贊 30 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章