3
OOM Killerが突然飛び出したときに、組み込みLinuxで数時間実行しているアプリケーションがあります。overcommit_memoryは2に設定されていますが、OOM Killerはストライクします
私はovercommit_memory=2
とovercommit_ratio=50
を設定して、状況を引き起こし、可能性のあるリークをキャッチしますが、OOM Killerは依然として打ち切ります!
自分の設定がアクティブであることを確認するには、大きなmallocを要求しました。overcommit_memory=2
を設定すると、実際にはゼロが返されます。
なぜ、OOMキラーがまだ始まっているのですか?問題の原因を調査するために何ができますか?
私も(dmallocライブラリの助けを借りて)私はメモリを食べていないことを確認しました。 mallocログには、同じ量のメモリを取得して返すという一定のプロセスがあることが示されています。つまり、問題はないようです。 – leonp
私が考えることのできるのは、おそらく 'malloc '以外のものがメモリを食べているということです。シーンや何かの後ろに何らかのバッファリングがあります。 'ps'はプロセスのメモリ使用量について何を言いますか? –
ありがとう、トム!あなたは目標を打つ! 問題はLinux I/Oバッファの制御メカニズムにありました。待機バッファの割合を10に設定すると(デフォルトでは40)、これで問題は解決され、問題なく6日間稼働しました。 – leonp