/dev/shmの空きメモリー内のファイルを切断しませんか?

/dev/shmの空きメモリー内のファイルを切断しませんか?

狂気のように感じたり、tmpfsは長期間の使用には適していません。

私のワークロードは、/dev/shm/[一部のディレクトリツリー]にファイルを非常にすばやく作成してリンクを解除します。 Linuxスラブの使用量(サイズ64とサイズ128)は、inodeの割り当て/リンク解除によって線形に増加し、絶対にダウンしません(メモリはmeminfoを介して回収不可能としてリストされ、slabinfoには何百万ものライブオブジェクトが表示されます)。

このメモリは決して回収されず、続行が許可されるとOOMが発生します。唯一の修正方法は、/dev/shmをアンインストールして再インストールすることです。

数年前に他のユーザーがこの質問をしましたが、答えは実際に問題の問題をカバーしていません(/dev/shm の操作によりオーバーフローが発生しました。)。

これは単にtmpfsの設計決定ですか、それとも別のものがありますか?インデックスノードが一度割り当てられると解放されないことは本当に残念です。

タイムライン:このプロセスは一度に1つずつ500万個のファイルを作成し、作成後すぐに各ファイルを切断します。この時点で、すべてのユーザープロセスが終了します。メモリ使用量は/ dev / shmにまだ500万のinodeがあるように見えますが、df -iとdf -hは/ dev / shmが本質的に空であることを報告します。プロセスループをさらに繰り返すと、システムメモリが完全に不足し、OOMが発生するまでメモリ使用量が直線的に増加します。

編集:後でこの問題が発生した場合、これは私が実行している古いカーネル(SLES 11、2.6.32など)の成果物であるようです。最新のカーネルでは問題を再現できません。

ベストアンサー1

これは、この特定のシステムで実行されている古いカーネルのバグのようです。最新のカーネルパッチがインストールされている最新のRHEL 6システムでは、これを再現できません。

おすすめ記事