プロセスごとに使用可能な仮想メモリを制限する方法

プロセスごとに使用可能な仮想メモリを制限する方法

時々、私のGNU / Linuxデスクトップの特定のプロセス(gvやgnashなど)は物理メモリを消費し、システムスラッシングを引き起こします。これらのプロセスは重要ではないので、あまりにも多くのメモリを使用すると自動的にシャットダウンする必要があります。

この目的のために/etc/security/limits.confファイルと-vオプションを使用できると思います。問題は、特定のユーザーに対してプロセスごとに使用可能なメモリー量を制限するのか、そのユーザーのすべてのプロセスを組み合わせて制限するのかです。また、再起動せずにこのファイルを有効にする方法も尋ねたいと思います。

答え1

メカニズムもありますulimit。制限できるものをすべて見ることができるシステムコール(LinuxではCライブラリ関数)ulimit(3)とBash組み込みulimitタイプがあります。ulimit -a現在の仮想メモリの制限を見てみましょうulimit -v。と言えば設定できますulimit -v INTEGER-KILOBYTES

ランニングはulimitあなたのすべてを変えるでしょう現在のシェルでは、現在の値より小さい値のみを選択できます。限られた仮想メモリでコマンドを実行するには、Bash サブシェルを使用できます。

( ulimit -v 131072; some-app )

答え2

Limit.confはユーザーの例で動作します。oracle Soft memlock 3145728 oracle hard memlock 3145728

それ以外の場合は、プロセス固有の制限を探している場合は、永続的な効果を表示するにはsysctl -aを参照してください。sysctl.confにパラメータを追加できます。

幸運を祈る

関連情報