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

基于邏輯區(qū)間熱度的垃圾回收算法

Jvm垃圾回收機制及性能調(diào)優(yōu)實戰(zhàn)
交大發(fā)布可回收物垃圾分揀機器人,實現(xiàn)助力全國垃圾分類回收工作
Non-Balance磨損平衡算法:提升固態(tài)硬盤3倍以上壽命

智能垃圾回收機器人的應用優(yōu)勢是什么
智能垃圾回收機器人的應用優(yōu)勢有哪些
生活垃圾數(shù)據(jù)化分類回收方法及其回收系統(tǒng)(機械部分)
詳解JVM的垃圾回收算法和垃圾回收器

Kubernetes容器垃圾回收的策略
基于內(nèi)部區(qū)域壓實(IZC)的垃圾回收

智能垃圾回收箱及其控制系統(tǒng)

智能垃圾回收箱控制系統(tǒng)硬件設計

智能垃圾回收箱功能實驗

評論