システムに非アクティブなページをプリエンプティブにスワップアウトさせることは可能ですか(vm.swappiness
)、ただし、システムのRAMが不足し(メモリが不足するのではなく)、スワップが強制された場合は、oom-killerを呼び出しますか?
最終的な目標は、主要なページフォールトが原因でシステムがディスクのスラッシングを開始したときに、システムが停止するのを防ぎながら、非アクティブなページをスワップアウトできるようにすることです。
もう1つの要望は、oom-killerがトリガーされる前にシステムが強制的に使用するスワップメモリの量を構成することです。このようにして、システムは、行き過ぎない限り、スワップに少しだけ浸ることができます。または、すべてのRAMを使用する前にoom-killerをトリガーするようにこのようなしきい値を設定して、ファイルシステムキャッシュ用のスペースを常に確保することもできます(したがって、ディスクのスラッシングが増えるのを防ぐことができます)。
これはそれほど難しいことではないようです。システムでXRAMが使用されている/使用されていないときにトリガーするようにoom-killerに指示できるようです。しかし、これが私が求めている理由です。わかりません。
明確にするために、スワップをオフにしたり、vm.swappiness
を調整したりするつもりはありません。 パラメータ
承認された回答:
私もその問題に苦労しました。何があってもシステムの応答性を維持したいだけで、数分待つよりもプロセスを失う方が好きです。カーネルoomkillerを使用してこれを達成する方法はないようです。
ただし、ユーザースペースでは、やりたいことが何でもできます。そこで、使用可能なRAMが10%を下回ると、(RSSによる)最大のプロセスを強制終了するEarly OOM Daemon
(https://github.com/rfjakob/earlyoom)を作成しました。
Earlyoomがなければ、http://www.unrealengine.com/html5/を数回起動することで、マシン(8GB RAM)を簡単にロックできます。今、物事が手に負えなくなる前に、有罪のブラウザタブが殺されます。