0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

SSDFans ? 來源:SSDFans ? 2023-06-30 10:28 ? 次閱讀

? ?

?01 背景

?目前基于閃存的固態(tài)硬盤保持著幾十年前的塊層接口,這在容量超額配置、頁面映射表的DRAM、垃圾回收開銷以及試圖減輕垃圾回收的主機軟件復(fù)雜性等方面帶來了巨大的代價。塊層接口向其上層展現(xiàn)出來的是一個一維的LBA數(shù)組,每個LBA都可以被讀寫,其最初的引用是為了隱藏存儲介質(zhì)的不同。然而隨著存儲介質(zhì)的迭代,為flash based存儲設(shè)備維護塊層接口語義代價越來越大,如flash based SSDs中FTL的運轉(zhuǎn)需要大量DRAM,GC需要OP空間,并且設(shè)備請求命令延遲被GC干擾后有抖動。NVMe區(qū)域命名空間(ZNS)的設(shè)定為SSD提供了一種全新的接口模式,ZNS作為一種新的存儲接口正在出現(xiàn),邏輯地址空間被劃分為固定大小的區(qū)域,每個區(qū)域必須按順序?qū)懭?,以便于閃存訪問。

?02 問題

?1.ZNS的IO棧

一般來說,新的存儲接口需要修改軟件棧。對于ZNS,需要修改兩個主要的IO棧組件,文件系統(tǒng)和IO調(diào)度器。首先,原地更新的文件系統(tǒng),如EXT4,必須被附加記錄的文件系統(tǒng)所取代,如日志結(jié)構(gòu)文件系統(tǒng)(LFS),以消除隨機更新。因為LFS的一個區(qū)段是通過追加記錄按順序?qū)懭氲?,每個區(qū)段可以被映射到一個或多個區(qū)域。其次,IO調(diào)度器必須保證一個區(qū)的寫請求的有序交付。例如,可以為每個區(qū)使用一個無序的隊列,調(diào)度器只需要確定不同區(qū)之間的服務(wù)順序。ZNS的順序?qū)懸笫沟肸NS只能適用于特定需求的應(yīng)用訪問。

2.增加主機開銷

在LFS的append logging方案下,臟段的過時塊必須通過段壓縮(也稱為段清理或垃圾收集)來回收,它將段中的所有有效數(shù)據(jù)轉(zhuǎn)移到其他段,使段變得干凈。壓實會調(diào)用大量的復(fù)制操作,特別是當(dāng)文件系統(tǒng)的利用率很高時。必須進行主機端GC,以換取使用無GC的ZNS SSD,盡管可以避免log-on-log下的重復(fù)GC。主機端GC的開銷比設(shè)備端GC的開銷要高,因為主機級塊復(fù)制需要處理IO請求,主機到設(shè)備的數(shù)據(jù)傳輸,以及讀取數(shù)據(jù)的頁面分配。此外,段壓縮需要修改文件系統(tǒng)元數(shù)據(jù)以反映數(shù)據(jù)的重新定位。此外,段壓縮的數(shù)據(jù)復(fù)制操作是批量進行的,因此,許多待寫請求的平均等待時間是相當(dāng)長的。根據(jù)F2FS--廣泛使用的日志結(jié)構(gòu)文件系統(tǒng)之一的實驗,當(dāng)文件系統(tǒng)利用率為90%時,分段壓縮的性能損失約為20%。因此,可以說目前的ZNS只關(guān)注SSD方面的好處,而沒有考慮到主機的復(fù)雜性增加。為了簡化SSD的設(shè)計,所有復(fù)雜的東西都被傳遞給主機。

此外,當(dāng)我們通過嵌入更多的閃存芯片來增加SSD的帶寬時,ZNS存儲系統(tǒng)將涉及收益遞減。ZNS設(shè)備的區(qū)域大小將被確定為足夠大,以利用SSD內(nèi)部閃存芯片的并行性。因此,更高帶寬的ZNS SSD將提供更大的區(qū)域大小,而文件系統(tǒng)必須相應(yīng)地使用更大的段大小。然后,主機遭受到更嚴重的段壓縮開銷,因為開銷通常與段大小成比例增加。為了提高IO性能,克服收益遞減的問題,需要進行主機-設(shè)備聯(lián)合設(shè)計,將段壓縮的每個子任務(wù)放在最合適的位置,而不損害原始ZNS的利益,而不是簡單地將GC開銷從SSD轉(zhuǎn)移到主機。

?03 方法

?為了降低主機端做垃圾回收所帶來的開銷,本文提出三種方法通過協(xié)同垃圾回收優(yōu)化來降低開銷。

1.基于內(nèi)部區(qū)域壓實(IZC)的垃圾回收

傳統(tǒng)的段壓實過程如圖1(a)所示,待回收區(qū)域中所有的有效數(shù)據(jù)都需要讀取到主機端,再寫到目標(biāo)區(qū)域中。這個過程需要大量的讀寫以及元數(shù)據(jù)更新操作,會占用主機端的資源帶來性能的下降。相比于傳統(tǒng)的段壓實,基于IZC的垃圾回收通過將未修改的有效數(shù)據(jù)的復(fù)制交付給SSD,并且利用SSD的copyback操作進行內(nèi)部的數(shù)據(jù)復(fù)制,從而降低主機端的資源占用,優(yōu)化系統(tǒng)性能。圖1(b)是IZC方案下的壓實過程,過程如下:普通段壓實的數(shù)據(jù)拷貝任務(wù)被拷貝卸載(3)所取代,它發(fā)送zone_compaction命令來傳輸塊拷貝信息(即源和目標(biāo)LBA)。因為目標(biāo)數(shù)據(jù)沒有被加載到主機頁面緩存中,所以不需要相應(yīng)的頁面緩存分配。固態(tài)硬盤內(nèi)部控制器可以有效地安排幾個讀和寫操作,同時最大限度地提高閃存芯片的利用率。因此,段壓實的延遲可以大大減少。此外,存儲內(nèi)的塊復(fù)制可以利用copyback操作。更為具體的執(zhí)行流程建議閱讀原文相關(guān)部分。

62ad58f8-16d9-11ee-962d-dac502259ad0.jpg ?

圖1段壓實過程對比圖

2.稀疏的順序重寫,對F2FS的Threaded Logging提供支持

為了消除傳統(tǒng)段壓實的開銷,F(xiàn)2FS提出的Threaded Logging機制為段壓實提供了全新的思路。由于ZNSSSD不支持隨機寫的功能,所以F2FS都是關(guān)閉Threaded Logging機制。本文提出了影子映射的方式,使得ZNSSSD對Threaded Logging提供支持,從而優(yōu)化段壓實的開銷。通過TL_open命令打開的zone會分配一個影子zone,并通過映射表來記錄對應(yīng)關(guān)系,同時維護一個bitmap記錄有效信息。例如,在圖2中,SSD為zone1(1)分配了一個LogFBG,F(xiàn)BG 15。對于TL_opened區(qū),該區(qū)的數(shù)據(jù)塊被分配到兩個FBG中,即原始FBG(FBG6)和LogFBG(FBG 15)。因此,這兩個FBG必須作為該區(qū)的映射FBG來維護。為了處理一個讀取請求,SSD通過比較目標(biāo)LBA和WP來識別最新數(shù)據(jù)的塊位置。如果目標(biāo)LBA在WP后面(目標(biāo)LBA < WP),則訪問LogFBG。否則,原始FBG將被訪問,以滿足讀取請求。當(dāng)TL_opened區(qū)最終被關(guān)閉時,LogFBG取代了原來的FBG,它被重新分配以備將來使用。

62c20064-16d9-11ee-962d-dac502259ad0.jpg ?

圖2Threaded Logging支持示意圖

考慮插入順序,有兩種模式:

以LBA為順序插入:如圖2,當(dāng)SSD收到對第0塊的兩個寫請求時,它從FBG 6讀取A和B的跳過的塊,將它們與主機發(fā)送的P和Q的塊合并,并在LogFBG處寫下一個完整的塊。在處理完對第0塊的寫請求后,SSD可以通過檢查該區(qū)的有效位圖來感知第1塊將被跳過。為了讓W(xué)P提前準(zhǔn)備好對第2塊的寫請求,被跳過的那塊必須被復(fù)制到LogFBG中。因此,在處理一個寫請求后,如果以下邏輯塊在有效位圖中被標(biāo)記為有效,ZNS+ SSD在調(diào)整WP的同時將它們復(fù)制到LogFBG。這種類型的插入被稱為LBA有序插入(LP),每次插入都是在區(qū)的當(dāng)前WP進行,以遵循LBA有序的寫入約束。

以PPA為順序插入:在圖2的例子中,在0號和2號的寫入請求到達之前,3號可以被復(fù)制,因為它們使用不同的閃存芯片。如果第1塊已經(jīng)被復(fù)制,即使第2塊和第4塊的寫請求還沒有到達,第5塊也可以被復(fù)制。我們稱這種技術(shù)為PPA有序插入(PP),它只考慮PPA有序的寫約束。每當(dāng)一個閃存頁在LogFBG被編程時,PPA-ordered plugging就會檢查對應(yīng)的閃存塊中映射到下面閃存頁的塊的有效性,并提前發(fā)出該閃存塊的所有可能的插入操作。然而,如果發(fā)出過多的插入操作,可能會干擾用戶的IO請求處理。為了解決這個問題,當(dāng)目標(biāo)閃存芯片處于空閑狀態(tài)時,插入操作將在后臺進行處理。如果沒有足夠的空閑時間,當(dāng)該區(qū)的WP必須通過跳過的區(qū)塊位置時,它們就會被處理。

3.混合段回收策略

通過上述的兩個策略,目前有兩種垃圾回收的方式。為了權(quán)衡在垃圾回收時選取哪種方式,本文提出了兩種垃圾回收策略的cost-benefit計算公式,在垃圾回收時總是選取開銷最小的垃圾回收方式。Npre-inv和Nvalid分別表示pre-invalid塊的數(shù)量和有效塊的數(shù)量。fplugging(N)是N個區(qū)塊的存儲內(nèi)插入成本。Nnode和Nmeta分別表示修改后的節(jié)點塊和元數(shù)據(jù)塊的數(shù)量。fcopy(N)和fwrite(N)分別是N塊的復(fù)制成本和寫入成本。Bcold表示預(yù)測的未來冷塊遷移的收益。公式中部分值很難計算或者無法計算,本文對這些值采取近似估計。

62d6ce72-16d9-11ee-962d-dac502259ad0.jpg ? 62e20166-16d9-11ee-962d-dac502259ad0.jpg ?

圖3cost-benefit權(quán)衡公式

?04 實驗結(jié)果

?評估實驗是基于FEMU的SSD仿真器評估了ZNS+ SSD的性能。相關(guān)延遲配置如下:

62f1bc1e-16d9-11ee-962d-dac502259ad0.jpg ?

表1實驗平臺設(shè)置

?實驗性能對比包含三個方面,分別為段壓實、Threaded Logging和SSD內(nèi)部芯片利用率。

?段壓實性能:該實驗主要基于IZC的垃圾回收策略效果進行評估。通過將copy操作卸載到SSD內(nèi)部,并且利用copyback操作,優(yōu)化垃圾回收過程,降低垃圾回收開銷。實驗結(jié)果驗證了IZC策略可以很好的降低垃圾回收開銷。

630e507c-16d9-11ee-962d-dac502259ad0.jpg ?

圖4段壓實實驗結(jié)果

Threaded Logging性能:該實驗主要對支持Threaded Logging后垃圾回收的性能評估。ZNS+在所有基準(zhǔn)上都優(yōu)于ZNS和IZC。ZNS+的吞吐量比ZNS高約1.33-2.91倍。與IZC相比,ZNS+將varmail工作負載的節(jié)點和元數(shù)據(jù)寫入流量減少了約48%。在所有的工作負載中,超過85.8%的回收段是由ZNS+的線程記錄處理的,因為定期檢查點方案限制了預(yù)無效塊的數(shù)量。

6340324a-16d9-11ee-962d-dac502259ad0.jpg ?

圖5支持Threaded Logging實驗結(jié)果

SSD內(nèi)部芯片利用率:該實驗主要對SSD內(nèi)部芯片利用率進行評估。在所有的工作負載中,IZC和ZNS+的芯片利用率都比ZNS高。ZNS+(LP)可以利用兩個連續(xù)的寫請求之間的空閑時間,而ZNS+(PP)可以通過利用空閑的閃存芯片,將插入操作與正常的寫請求處理重疊起來。因此,與ZNS+(PP)相比,ZNS+(LP)顯示出更高的芯片利用率。

634842fa-16d9-11ee-962d-dac502259ad0.jpg ?

圖6ZNSSSDvsStream SSD性能對比實驗結(jié)果

05總結(jié)

目前的ZNS接口在主機上施加了很高的存儲回收開銷,以簡化SSD。為了優(yōu)化整體的IO性能,必須將每個存儲管理任務(wù)放在最合適的位置,并使主機和SSD合作。為了將塊復(fù)制操作卸載到SSD上,本文設(shè)計了ZNS+,它支持存儲區(qū)內(nèi)的壓實和Threaded Logging。與傳統(tǒng)的段壓實相比,在性能和SSD內(nèi)部芯片利用率有很大的改進。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8777

    瀏覽量

    152421
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1976

    瀏覽量

    65036
  • 帶寬
    +關(guān)注

    關(guān)注

    3

    文章

    976

    瀏覽量

    41268

原文標(biāo)題:如何優(yōu)化ZNS下的垃圾回收?

文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    固態(tài)硬盤垃圾回收方法

    由于NAND閃存的固有限制,寫前擦除和擦除粒度較大,基于NAND Flash的固態(tài)硬盤(SSD)需要執(zhí)行垃圾回收以重用失效頁。然而垃圾回收帶來的高開銷會顯著降低SSD的性能,也會直接影
    發(fā)表于 12-03 10:50 ?2次下載
    固態(tài)硬盤<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>方法

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

    針對現(xiàn)有的NAND閃存垃圾回收算法中回收性能不高,磨損均衡效果差,并且算法內(nèi)存開銷大的問題,提出了一種基于邏輯區(qū)間熱度的垃圾回收算法。該算法
    發(fā)表于 12-05 18:27 ?0次下載
    基于邏輯區(qū)間熱度的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    電子垃圾回收產(chǎn)業(yè)的隱秘世界

    如今的電腦和手機等電子設(shè)備換代頻繁、淘汰迅速,因此電子垃圾回收利用也成了一個在全球蓬勃發(fā)展的產(chǎn)業(yè)。
    發(fā)表于 01-22 19:20 ?1.1w次閱讀

    Jvm垃圾回收機制及性能調(diào)優(yōu)實戰(zhàn)

    JVM中自動檢測并移除不再使用的數(shù)據(jù)對象的這種機制稱為:垃圾回收,簡稱GC。JVM通過使用垃圾收集器及使用相應(yīng)的垃圾回收算法將內(nèi)存中不再被使
    發(fā)表于 04-03 14:31 ?2次下載

    交大發(fā)布可回收垃圾分揀機器人,實現(xiàn)助力全國垃圾分類回收工作

    6月4日消息,交大中英國際低碳學(xué)院可回收垃圾分揀機器人,更是打破國外技術(shù)壟斷,可實現(xiàn)每小時分揀垃圾5400次,并在大量垃圾中精準(zhǔn)識別可回收
    的頭像 發(fā)表于 06-04 14:31 ?3049次閱讀

    智能垃圾回收機器人的應(yīng)用優(yōu)勢是什么

    為什么需要垃圾回收機器人? 首先,垃圾分類回收是實現(xiàn)地球資源循環(huán)利用至關(guān)重要的一環(huán),對于可持續(xù)發(fā)展有重大意義。垃圾分類也是對付
    發(fā)表于 07-22 09:26 ?2168次閱讀

    智能垃圾回收機器人的應(yīng)用優(yōu)勢有哪些

    為什么需要垃圾回收機器人? 首先,垃圾分類回收是實現(xiàn)地球資源循環(huán)利用至關(guān)重要的一環(huán),對于可持續(xù)發(fā)展有重大意義。垃圾分類也是對付
    發(fā)表于 08-17 16:08 ?4345次閱讀

    生活垃圾數(shù)據(jù)化分類回收方法及其回收系統(tǒng)(機械部分)

    一種生活垃圾數(shù)據(jù)化分類回收方法及其回收系統(tǒng)(機械部分)(1).doc 上傳完成 刪除 標(biāo)題一種生活垃圾數(shù)據(jù)化分類回收方法及其
    發(fā)表于 11-05 18:18 ?0次下載

    詳解JVM的垃圾回收算法和垃圾回收

    JVM 垃圾回收機制是對堆中沒有使用的對象進行回收,那么判斷對象是否“存活”就至關(guān)重要。在判斷對象是否“存活”的方法中,我們會介紹引用計數(shù)算法和可達性分析法。
    的頭像 發(fā)表于 03-29 13:55 ?1563次閱讀
    詳解JVM的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>器

    Kubernetes容器垃圾回收的策略

    Kubernetes的垃圾回收由kubelet進行管理,每分鐘會查詢清理一次容器,每五分鐘查詢清理一次鏡像。在kubelet剛啟動時并不會立即進行GC,即第一次進行容器回收為kubelet啟動一分鐘后,第一次進行鏡像
    的頭像 發(fā)表于 08-15 09:16 ?1608次閱讀

    JVM入門之垃圾回收算法

    根據(jù)如何判定對象是垃圾,垃圾回收算法分為兩類:1、 「引用計數(shù)式垃圾收集」 (判定垃圾是通過引用計數(shù)器)別名:直接
    的頭像 發(fā)表于 02-10 11:40 ?905次閱讀
    JVM入門之<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    使用圖像識別來識別可回收和不可回收垃圾

    電子發(fā)燒友網(wǎng)站提供《使用圖像識別來識別可回收和不可回收垃圾.zip》資料免費下載
    發(fā)表于 06-20 09:17 ?0次下載
    使用圖像識別來識別可<b class='flag-5'>回收</b>和不可<b class='flag-5'>回收</b>的<b class='flag-5'>垃圾</b>

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

    智能高效遠程控制智能垃圾回收箱本文設(shè)計了基于機械傳動、嵌入式系統(tǒng)和物聯(lián)網(wǎng)技術(shù)的智能垃圾回收箱及控制系統(tǒng),包括結(jié)構(gòu)、硬件和軟件設(shè)計,以及基于機智云后臺服務(wù)器的操作系統(tǒng),實現(xiàn)了用戶信息識
    的頭像 發(fā)表于 04-13 08:10 ?1459次閱讀
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱及其控制系統(tǒng)

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

    智能高效遠程控制智能垃圾回收箱控制系統(tǒng)硬件部分的選型與設(shè)計是整個產(chǎn)品的基礎(chǔ),所有功能的實現(xiàn)都要圍繞其進行開發(fā)。本章對智能垃圾回收箱控制系統(tǒng)的硬件進行詳細設(shè)計。智能
    的頭像 發(fā)表于 04-13 08:10 ?1025次閱讀
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱控制系統(tǒng)硬件設(shè)計

    智能垃圾回收箱功能實驗

    需要系統(tǒng)地介紹智能垃圾回收箱軟件硬件設(shè)計完成后的設(shè)備運行狀況,包括正常工作和問題調(diào)試。同時,也要描述當(dāng)所有設(shè)備正常工作時智能垃圾回收箱的操作流程。01硬件模塊的試驗在智能
    的頭像 發(fā)表于 05-24 08:10 ?620次閱讀
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱功能實驗