垃圾回收的概念其實是很簡單的,太多了資料可以看看就會明白,主要的經典算法就是Greedy policy,Cost-benefit policy, Cost-Age-Times(CAT)policy。這里我就簡單說一下需要掌握的幾個關鍵性概念:
1、預留空間 OP(Over Provisioning) 和 WAF(Write Amplification Factor)
由于WAF的大小和copy 有效數據有關,想要減少WAF的值出發點是減少copy。
2、掌握垃圾回收,沿著以下線路進行探索(1)GC的原因:塊最終會被寫滿,必須時刻保證有free page 來滿足新的寫入需求(2)GC的過程:When to GC 什么時候喚醒GC操作->Which block選擇作為victim block, 這里的選擇方法就是上述提到的經典算法以及改進->How many blocks將要被erase 擦除,只要涉及到擦除,就會和磨損平衡有關->How to 寫回這些有效數據,Where to 分配這些有效數據,這里稱之為Data redistribution policy數據再分配策略Where 來分配新請求寫入的數據
想要改進GC的算法,最基本的簡單的就是按照上述來思考。
現如今的都是在經典算法上進行改良。我在學習的時候做過三種算法的模擬,后來自己加了一個Two-block Policy 來實現block再分配,做了一個簡簡單單的改良,WAF寫放大,以及copy次數顯著減少。就是有兩類block,一類是host write block, 寫入的是從host發來的新數據;另一類是copy write block,寫入的是victim block上的有效數據。Z這樣簡單的分類對后續學習磨損平衡很有幫助。包括那些經常更新的數據還有不經常更新的數據怎么來做處理都是學習和思考的點。
對Wear Leveling 磨損平衡的認知:
在寫數據操作不斷更新的情況下,使得物理閃存塊的擦除操作頻繁發生,而每一個塊上的擦除操作次數不是無限的,是有一定壽命的,也就是經常看到的Program/Erase Cycle 來衡量閃存的壽命。一個block擦除次數到達了一定的閾值,會使得這個塊報廢,降低閃存的壽命。磨損平衡的出發點是不能一直讓那幾個塊一直不斷的erase,應該讓所有的block平攤這個任務,最好的理想狀態就是每個block的擦除次數是平均的,達到平衡的效果,以此來延長閃存的壽命。
拿一張紙記筆記來說,如果不斷的更改內容在一處,不斷的用橡皮擦erase,用不了幾次,這里就會破掉,因此每次擦除盡量在整張紙上找剛擦一兩次的,這會延長紙張整體壽命。
關于閃存的預期壽命:
這個overhead是指文件系統和閃存管理數據結構的開銷。
在看了很多論文以及材料的時候以下是常常會接觸到的概念:
在研究磨損平衡的時候把擦除次數Erase Counts多的塊稱之為old blocks,這類塊年歲已高,壽命即將到達尾聲,因此盡量不要讓他們再經受擦除的折磨來長命百歲,任務就給那些擦出次數少的塊成為young block,年輕力壯,可以幫老人們多多承擔擦除的任務。
前面有提到,擦除是由于用戶寫入數據不斷更新而造成的,那些不斷更新的數據稱之為hot data,具有high locality,相對比,不常更新的稱之為cold data。
在研究了經典的CAT垃圾回收算法時,因為Copy的有效數據可以是cold data 也可以是hot data,而不斷更新的新的請求數據,那些也可以是cold data和hot data,那么怎樣處理這些數據,怎么樣分配閃存的 物理塊,能夠減少copy的次數,能夠延長閃存的壽命,這里就會啟發很多想法。
磨損平衡分為動態和靜態兩種:
動態磨損平衡:主要特點是下一次寫數據選擇那些擦除次數少的即young blocks來寫,但是那些存放cold data的塊的擦除次數是比存放hot data的少很多的,因此盡可能的把hot data 寫進young blocks上,但是cold data不能一直占用擦出次數少的塊,會造成失衡,因此需要靜態磨損平衡,冷熱數據的分離對性能影響很大。
靜態磨損平衡:主要做的就是追蹤所有的好塊,把cold data從young blocks里面copy 到 older blocks中,這樣可以讓young blocks歇一歇。我們要記得磨損平衡不是為了減少copy次數,而是為了延閃存的壽命。
二者的比較動態磨損平衡是低成本并且降低靜態磨損平衡的復雜度,靜態磨損平衡是最大化的延長了壽命,所以要將二者結合。
磨損平衡的終極目標就是:
Hot data -> young blocks
Cold data -> old blocks
Hot-Cold Swapping 技術
核心算法(結合CAT垃圾回收算法):
每個block都記錄著對應的擦出次數
定期檢查所有塊的擦出次數,這個激活期成為AP(Activation Period)
只要任何兩個塊的擦除次數之間的最大差異大于閾值,它們就會被交換
由于磨損平衡,會帶來的性能開銷會使得WAF增大。
-
閃存
+關注
關注
16文章
1805瀏覽量
115145 -
算法
+關注
關注
23文章
4631瀏覽量
93423
原文標題:FTL垃圾回收,磨損平衡的學習筆記
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
固態硬盤垃圾回收方法
![固態硬盤<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>方法](https://file.elecfans.com/web2/M00/49/70/poYBAGKhwLSAO8iwAAAU5ZRXEr0941.jpg)
基于邏輯區間熱度的垃圾回收算法
![基于邏輯區間熱度的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法](https://file.elecfans.com/web2/M00/49/73/poYBAGKhwLaAYd1pAAAgG6xRMjY698.jpg)
Jvm垃圾回收機制及性能調優實戰
交大發布可回收物垃圾分揀機器人,實現助力全國垃圾分類回收工作
Non-Balance磨損平衡算法:提升固態硬盤3倍以上壽命
![Non-Balance<b class='flag-5'>磨損</b><b class='flag-5'>平衡</b>算法:提升固態硬盤3倍以上壽命](https://file.elecfans.com/web1/M00/E7/37/pIYBAGBcQSCAdYLcAAAJK9bVKW8717.png)
智能垃圾回收機器人的應用優勢是什么
智能垃圾回收機器人的應用優勢有哪些
生活垃圾數據化分類回收方法及其回收系統(機械部分)
基于內部區域壓實(IZC)的垃圾回收
![基于內部區域壓實(IZC)的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>](https://file1.elecfans.com/web2/M00/8B/C0/wKgaomSePdGAAZMHAAAmnYuXUpA284.jpg)
智能垃圾回收箱及其控制系統
![智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱及其控制系統](https://file.elecfans.com/web2/M00/40/03/pYYBAGJrSWqAb-nSAAAXmKtCFeo833.jpg)
評論