如何限制 Linux 中特定进程的内存使用量?

如何限制 Linux 中特定进程的内存使用量?

我为一个班级编写了一个程序,我的教授将在各种低内存环境中测试该程序,以查看程序在内存不足时的行为。有没有办法可以在不创建虚拟机的情况下模拟低内存环境中的执行情况?

答案1

你需要使用限制

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 千字节,则两个程序都无法运行,因为它们会加载库,这会增加它们的大小。超过 1000 KB。

-d 数据段大小

-m 最大内存大小

-v 虚拟内存大小

运行 ulimit -a 查看 ulimits 可以设置的所有资源上限。

相关内容