JBD2はext4ファイルシステムのカーネルスレッドです。 JBD2は、使用中にシャドウ (BH_Shadow) 状態になることが多く、システムのパフォーマンスに影響を与える可能性があります。 この問題を解決するために、カーネルバージョン4.19.81-17.al7
から始まるAlibaba Cloud Linux 2およびAlibaba Cloud Linux 3でJBD2を最適化するインターフェイスが提供されています。 このトピックでは、インターフェイスについて説明します。
背景情報
Ext4は、最も一般的なジャーナリングファイルシステムの1つです。 JBD2は、ジャーナルを更新するためのext4のカーネルスレッドであり、ext4ファイルシステムのグローバルリソースです。 JBD2カーネルスレッドがキャッシュからアクセス許可を取得しようとすると、キャッシュページはBH_Shadow状態になります。 この場合、JBD2は、キャッシュページがディスクにライトバックするまで長時間待機します。これは、システムパフォーマンスに影響を与える可能性があります。 この問題を解決するために、Alibaba Cloud LinuxはJBD2を最適化するためのforce_copy
カーネルインターフェイスを提供しています。 このインターフェイスを有効にして、キャッシュページを強制的にコピーできます。 これにより、BH_ShadowステートのキャッシュページがディスクにライトバックするのをJBD2が待機する時間を短縮できます。 さらに、Alibaba Cloud Linuxは、ファイルシステムに関連するサービス品質 (QoS) の問題の分析に役立つ統計
インターフェイスを提供します。
インターフェイス説明
インターフェイス | 説明 |
force_copy | インターフェイスファイルは /proc/fs/jbd2/<device>-8/force_copyに保存されます。 重要 インターフェイスは実行するためにメモリを消費します。 |
統計 | インターフェイスファイルは /proc/fs/jbd2/<device>-8/statsに保存されます。 インターフェースは、ファイルシステムのQoS問題がJBD2によって引き起こされるかどうかを判断するのに役立ちます。 |
例
次の例は、force_copy
およびstats
インターフェイスを実装する方法を示しています。
デフォルトでは、
force_copy
インターフェイスは無効になっています。 インターフェイスを有効にするにはインターフェイスの値を1に設定し、インターフェイスを無効にするには値を0に設定します。echo 1 > /proc/fs/jbd2/nvme0n1-8/force_copy # Call the interface.
次のコマンドを実行して、
stats
インターフェイスを照会します。cat /proc/fs/jbd2/nvme0n1-8/stats
以下のようなコマンド出力が返されます。
337 336 65536 0 14837 1701504 16 0 20058 5 33082732 605 942 1000 1000
次の表に、上記のサンプル出力のフィールドを示します。
項目
説明
最初のフィールド
トランザクションID。
2番目のフィールド
要求されたトランザクションの数。
3番目のフィールド
キャッシュされたトランザクションの最大数。
4番目のフィールド
翻訳が処理の待機に費やした時間。
5番目のフィールド
トランザクションリクエストのレイテンシ。
6番目のフィールド
トランザクションが実行された時間。
第7フィールド
トランザクションがロックされた時間。
第8フィールド
トランザクションの更新にかかった時間。
第9フィールド
トランザクションのログにかかった時間。
10番目のフィールド
トランザクションのコミットにかかった平均時間。
第11フィールド
トランザクションに含まれるハンドルの数。
第12フィールド
トランザクションに含まれるブロックの数。
13番目のフィールド
トランザクションに対して記録されたブロックの数。
14番目のフィールド
カーネル構成の時定数。 単位: ヘルツ。
15番目のフィールド
カーネル構成の時定数。 単位:ms。