1. 背景
隨著固態硬盤帶寬的快速增長,其訪問延遲在不斷縮小,在CPU核數的不斷增長下,我們希望文件系統可以配合這種核數的擴展盡量釋放SSD的全速帶寬,但是在過去的實踐中,傳統文件系統只對于傳統的HDD等設備具有更好的多核擴展性支持,通過在NVMe SSD上的實驗發現,當核數擴展時文件系統的性能表現較差。
2. 調研實驗及分析
1) 實驗設置
在每個核上運行一個進程,并按照從1到72的規模擴展CPU核數,每個進程運行60秒,并執行創建文件、寫操作、同步操作、刪除文件等操作內容。在此過程中測試XFS、ext4、SpanFS、F2FS和模擬理想文件系統對于不同類型設備的吞吐量數據。
2) 實驗結果
實驗結果顯示,現存文件系統對于NVMe SSD的多核擴展性支持相對較差,而對于傳統的HDD和SATA SSD的擴展性具有接近于理想條件下的支持。同時最右邊的圖表顯示,在72核的規模之下,大部分文件系統無法高效利用NVMe SSD的高速帶寬。
3) 原因分析
i. 并發控制層的鎖緩存爭用
對于文件系統中支持并發訪問的共享鎖,由于鎖的計數值需要在各核之間共享,那么就會引入計數器的緩存一致性問題,因此當核數增加時這種維護開銷就會更加明顯;
ii. 內存數據結構層的順序化
LFS將內存數據結構分為三個區域:inode表、inode區域和data區域,對于每個區域,F2FS都會用一個radix樹的結構進行管理,并且在每一棵樹上用讀寫鎖來進行并發控制。隨著并發寫者數量的增加,訪問這三種樹時會造成嚴重的順序化,進而造成性能的下滑。
iii. 空間分配層的數據化
雖然F2FS采用了多頭日志的形式并行化IO請求,但是由于各個溫度的數據間的內部依賴,實際的數據持久化請求會被序列化(例如為了保證F2FS的沖突一致性,數據塊持久化必須先于inode的持久化,同時文件inode的持久化必須在目錄數據塊更新之前)。因此,這種多頭日志的設計對于擴展IO吞吐量沒有很明顯的優勢。
3. 設計
為了充分利用多核架構和現代NVMe SSD的高帶寬特性,我們設計了Max-針對閃存的多核加速文件系統,與F2FS的架構對比圖如下:
根據實驗分析的三個層面的問題,分別給出解決方案:
1) 設置每內核讀者信號量,讀訪問可以并發進行,每個內核維護一個讀者計數,各個內核的計數值互不相關,避免了在內核間維護緩存一致性的開銷。當有一個寫請求出現時,各個內核不再處理新的讀請求,把當前正在進行的讀請求處理完成后再處理寫者的寫訪問。利用CPU調度器來高效檢查每內核計數值,不必引入額外開銷。
2) 將內存數據結構的索引劃分為多個文件單元,每個文件單元包含單個文件的 inode 表項、inode 頁和數據頁,利用多棵樹的索引實現并行化。
3) 將每種類型的日志區域切分為更小粒度的日志,每個小日志負責自己空間的分配,各小日志之間的空間分配互不干擾。
4. 實驗效果
實驗結果顯示,MAX在數據訪問和元數據訪問帶寬都實現了較好的多核可擴展性,與原始的F2FS等文件系統相比具有良好的優化效果。
審核編輯:劉清
-
處理器
+關注
關注
68文章
19829瀏覽量
233868 -
SSD
+關注
關注
21文章
2955瀏覽量
119214 -
調度器
+關注
關注
0文章
98瀏覽量
5471
原文標題:用于閃存的多核加速文件系統
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
串行閃存和MPFS/FAT文件系統不會掛載該怎么辦?
Linux文件系統課程
基于μC/OS-II的文件系統設計
NTFS文件系統,NTFS文件系統是什么意思
XfS文件系統,XfS文件系統是什么意思
基于NAND閃存的文件系統YAFFS在嵌入式系統中的應用

文件系統是什么?淺談EXT文件系統歷史

適用于Linux的最佳通用文件系統 Linux文件系統的安裝

評論