it-swarm-ja.com

Linuxで特定のプロセスのメモリ使用量を制限するにはどうすればよいですか?

私は、教授がさまざまな低メモリ環境でテストして、プログラムのメモリが不足したときの動作を確認するクラスのプログラムを作成しました。仮想マシンを作成せずに、メモリの少ない環境で実行をシミュレートする方法はありますか?

7
user20222

あなたは使用したいと思うでしょう limit

ulimitは、メモリ使用率を制限するために使用できます(とりわけ)

これは、メモリ使用量を低く設定して/bin/ls/bin/catよりも大きい)が機能しなくなったが、/bin/catは引き続き機能する例です。

$ ls -lh /bin/ls /bin/cat
-rwxr-xr-x 1 root root 25K May 24 2008 /bin/cat
-rwxr-xr-x 1 root root 88K May 24 2008 /bin/ls
$ date > test.txt
$ ulimit -d 10000 -m 10000 -v 10000
$ /bin/ls date.txt
/bin/ls: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory
$ /bin/cat date.txt
Thu Mar 26 11:51:16 PDT 2009
$

注:制限を1000キロバイトに設定すると、ライブラリが読み込まれ、サイズが大きくなるため、どちらのプログラムも機能しません。 1000KBを超える。

-dデータセグメントサイズ

-m最大メモリサイズ

-v仮想メモリサイズ

Ulimit -aを実行して、ulimitsが設定できるすべてのリソースキャップを確認します。

8
basszero