システムが非アクティブページを先制的に交換できるようにすることができますが(vm.swappiness
)システムのRAMが不足している(メモリ不足の代わりに)強制的に交換する必要がある場合は、oom-killerを呼び出すことはできますか?
究極の目標は、主要なページエラーが原因でディスクが破損し始めた場合にシステムがハングするのを防ぎながら、まだアクティブでないページを交換できるようにすることです。
もう一つの希望は、oom-killerがトリガされる前にシステムが強制的に使用する必要があるスワップメモリの量を設定することです。これにより、システムがあまりにも多くない限り、スワップスペースを少し使用できます。あるいは、すべてのRAMが使用される前にoom-killerをトリガーするしきい値を設定して、常にファイルシステムキャッシュのためのスペースを解放することができます(したがって、より多くのディスクスラッシングを防ぎます)。
そうするのは難しいとは思えません。システムがX RAMを使用/アイドル状態にしたときにoom-killerがトリガされるように指示できるようです。しかし、それが私が尋ねる理由です。
vm.swappiness
明確にするためにスワッピングをオフにしたり、パラメータを調整したくありません。
ベストアンサー1
私もこの問題で苦労しています。とにかく、私はシステムが応答を続けたいと思っており、数分間待つのではなくプロセスを見逃す方が良いです。カーネルOOMキラーを使用してこれを達成する方法はないようです。
しかし、ユーザー空間では、私たちが望むものは何でもできます。だから私は初期OOMデーモン(https://github.com/rfjakob/earlyoom)利用可能なRAMが10%未満に低下すると、最大のプロセスがRSSを介して終了します。
Earlyoomがない場合は、起動してマイコンピュータ(8GB RAM)を簡単にロックできます。http://www.unrealengine.com/html5/何度も。これで問題が解決する前に、[有罪のブラウザ]タブが終了します。