我正在尝试使用cgroup(Control Group) 来限制 virtualbox 的内存使用,但它似乎不起作用。
我的机器是:
$ uname -a
Linux fc.bgi 2.6.40-4.fc15.i686 #1 SMP Fri Jul 29 18:54:39 UTC 2011 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我试图让它像这样工作:
在内存层次结构下创建新的 cgroup:
$ cgcreate -g memory:vbox
Run Code Online (Sandbox Code Playgroud)为 vbox 设置 memory.limit_in_bytes:
$ cgset -r memory.limit_in_bytes=512M vbox
Run Code Online (Sandbox Code Playgroud)将运行 pid 的 vbox 分组到 vbox:
$ cgclassify -g memory:vbox 20015
Run Code Online (Sandbox Code Playgroud)有人可以解释为什么这不起作用吗?
您可以使用 /etc/security/limits.conf\ 在您放置的此文件中限制内存使用:
\n\ndomain type item value
其中domain是@groupname、type是hard或soft是hard在任何情况下都不能超过的限制。
item项目字段指定受限制的项目类型。示例\n \xe2\x80\x8b\n包括 core(核心文件的大小)、data(程序\xe2\x80\x99s 数据区的大小)、fsize(用户创建的文件的大小)、 nofile(打开数据文件的数量)、rss(驻留集大小)、stack(堆栈大小)、cpu(单个进程的 CPU 时间,以分钟为单位)、nproc(并发进程数)、maxlogins (同时登录的数量)和优先级(进程优先级)。数据、RSS 和堆栈项都与程序消耗的内存相关。这些和其他数据容量度量均以千字节为单位。
与您选择的字段value相关item,例如,如果您cpu在该item字段中选择并输入2then value,则万一domain(您的 VirtualBox 组)占用的 CPU 时间超过了2cpu 时间,它将被终止。
您也可以使用ulimit,但它仅限于 bash shell。
希望这可以帮助您实现目标,尽管它不是按照您要求的方法完成的。
\n