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