使用cgroup限制virtualbox的内存使用

9 fedora virtualbox cgroups

我正在尝试使用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)

我试图让它像这样工作:

  1. 在内存层次结构下创建新的 cgroup:

    $ cgcreate -g memory:vbox
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为 vbox 设置 memory.limit_in_bytes:

    $ cgset -r memory.limit_in_bytes=512M vbox
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将运行 pid 的 vbox 分组到 vbox:

    $ cgclassify -g memory:vbox 20015
    
    Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这不起作用吗?

Han*_* N. 3

您可以使用 /etc/security/limits.conf\ 在您放置的此文件中限制内存使用:

\n\n

domain type item value

\n\n

其中domain@groupnametypehardsofthard在任何情况下都不能超过的限制。

\n\n

item项目字段指定受限制的项目类型。示例\n \xe2\x80\x8b\n包括 core(核心文件的大小)、data(程序\xe2\x80\x99s 数据区的大小)、fsize(用户创建的文件的大小)、 nofile(打开数据文件的数量)、rss(驻留集大小)、stack(堆栈大小)、cpu(单个进程的 CPU 时间,以分钟为单位)、nproc(并发进程数)、maxlogins (同时登录的数量)和优先级(进程优先级)。数据、RSS 和堆栈项都与程序消耗的内存相关。这些和其他数据容量度量均以千字节为单位。

\n\n

与您选择的字段value相关item,例如,如果您cpu在该item字段中选择并输入2then value,则万一domain(您的 VirtualBox 组)占用的 CPU 时间超过了2cpu 时间,它将被终止。

\n\n

您也可以使用ulimit,但它仅限于 bash shell。

\n\n

希望这可以帮助您实现目标,尽管它不是按照您要求的方法完成的。

\n