JBD2作為ext4文件系統的內核線程,在使用過程中常會遇到影子狀態(BH_Shadow),影響系統性能。為解決使用JBD2過程中出現的異常,Alibaba Cloud Linux 2(內核版本4.19.81-17.al7
開始)和Alibaba Cloud Linux 3對JBD2進行了優化。本文主要介紹優化JBD2的接口。
背景信息
ext4作為最常用的日志文件系統之一,更新日志(journal)的內核線程為JBD2,JBD2對ext4文件系統而言,是一個全局資源。您在使用過程中,可能出現JBD2內核線程對緩存嘗試獲取訪問權限時,發生緩存頁處于影子狀態(BH_Shadow),從而引發JBD2持續等待緩存頁回寫到磁盤的時間過長的情況,該情況會影響系統性能。因此Alibaba Cloud Linux針對特定場景進行了優化,增加了內核接口force_copy
,允許用戶啟用優化功能,以強制進行緩存頁拷貝,從而減少在緩存頁處于影子狀態的等待。同時,為了輔助分析文件系統相關的服務質量(QoS)中的問題,Alibaba Cloud Linux增加了一個JBD2的相關信息統計接口stats
。
接口說明
接口 | 描述 |
force_copy | 接口位于/proc/fs/jbd2/<device>-8/force_copy,其中變量 重要 設置該接口后會額外消耗一定的內存。 |
stats | 接口位于/proc/fs/jbd2/<device>-8/stats。用于輔助確認文件系統的QoS中的問題是否因JBD2引發。 |
接口示例
force_copy
和stats
接口示例如下。
force_copy
接口默認為關閉狀態。將接口設置為1表示調用該接口;設置為0表示關閉該接口。echo 1 > /proc/fs/jbd2/nvme0n1-8/force_copy # 調用接口
使用以下命令查看
stats
接口。cat /proc/fs/jbd2/nvme0n1-8/stats
返回結果如下。
337 336 65536 0 14837 1701504 16 0 20058 5 33082732 605 942 1000 1000
返回結果中,各域說明如下。
域
描述
第1個域
事務ID。
第2個域
請求的事務數。
第3個域
最大事務緩存。
第4個域
事務等待時間。
第5個域
事務請求延遲。
第6個域
事務運行時間。
第7個域
事務鎖住時間。
第8個域
事務刷新時間。
第9個域
事務logging時間。
第10個域
平均提交時間。
第11個域
事務包含的原子操作handle個數。
第12個域
事務包含的塊數。
第13個域
事務已記錄的塊數。
第14個域
HZ(內核配置中的時間常量)。
第15個域
HZ轉化為ms。