Red Hat Enterprise Linux で dentry_cache/dentry slab キャッシュのサイズが継続的に増加する
Issue
- アプリケーションは、一意の名前が付けられた大量のファイル (約 15,000 件/時間) を作成し、一定期間が経過すると削除されます。
- 一度に約 5000 個のファイルしか存在しません。
- free によって報告されるメモリー使用量が非常に高くなります。
- 調査の結果、dentry 構造体のカーネルメモリースラブキャッシュ (RHEL4 または RHEL5 では
dentry_cache、RHEL6 または RHEL7 ではdentryと呼ばれる) が使用率の上昇の原因であることが判明しました。 - dentry_cache が利用可能な (キャッシュされた/空き) メモリーを使い果たすとどうなるでしょうか?
- ファイルの削除後も dentry オブジェクトが解放されないのはなぜですか?プロセス所有者ですか?Java の delete メソッドの挙動によって、削除されたファイルがどこかに隠れて保存されている可能性はありますか?
- vfs_cache_pressure を詳しく説明してください。
- dentry_cache のサイズを減らすために他にどのような手段がありますか?
- vm.drop_caches=2 は使用できますか? 別の/推奨される方法はありますか?どれくらい安全ですか?これは cron ジョブで実行できますか?
Environment
- Red Hat Enterprise Linux 4
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 8
- Red Hat Enterprise Linux 9
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.