プロセスメモリ使用量制限を設定するには?
開いているファイルの制限に似ています/etc/security/limits.conf
。
ubuntu soft nofile 4096
ubuntu hard nofile 8192
たとえば、eval
1.1Gファイルのネイティブjsonデータを含むPythonスクリプトを実行すると、Pythonはそれぞれ実行中にRAM全体を消費し、コンピュータがdict
20〜30分間停止します。その後:list
json.txt
# python read_data.py
Killed
Ubuntuシステムは今日非常に安定しています。一時停止状態で再起動します。スワップ使用量が8GBに達しました。 RAMが完全に空で、スクリプトが実行中です。
killed
私のスクリプトがこの制限を設定できるかどうかを知りたいです。システムをこのように調整できますか?現在のRAMサイズの70%以上を占めるすべてのプロセスは終了または停止されます。
答え1
同じファイルを使用すると、limits.conf
以下を制限できます。
data
- 最大データサイズ(KB)memlock
- 最大ロックされたメモリアドレス空間(KB)rss
- 最大常駐セットサイズ(KB)as
- アドレス空間制限(KB)stack
- 最大スタックサイズ(KB)
だからあなたはかなり多くのことを行うことができます。制限を設定したら、ulimit -a
→を使用してこのレベルを確認し、このプログラムを使用して設定することもできます。使用するにlimits.conf
はが必要ですpam_limits.so
。
最後はスクリプトを殺すことです。私はこれがOOMキラーかもしれないと思います。物理メモリを使い果たすと誤動作するプロセスを終了するLinuxカーネルの機能です。 ;)dmesg
キラーが使用されていることを確認するために使用されます。終了する候補プロセスと終了したプロセスに関する多くの情報があります。
乾杯、