5

我正在尝试遵循有关 cgroups 的指南,例如这个。我不太确定清楚地了解 cgroups 目前应该如何工作。但我确信一件事:我找到的所有指南都记录了/etc/cgconfig.confand的用法/etc/cgrules.conf。这些文件应该由两个守护进程加载,我认为应该命名cgredcgconfig.

在 Debian Squeeze 下,这两个守护进程似乎是通过安装cgroup-bin. 但是在 Wheezy 中,这些守护进程不再存在于包中:http ://packages.debian.org/fr/wheezy/amd64/cgroup-bin/filelist 。

我只是想创建某种共享托管解决方案,我想限制我的用户的 RAM 使用。有人告诉我 cgroups 并想尝试一下,但我不明白如何在 Wheezy 中使用该版本,也找不到任何文档来帮助我。

有人可以告诉我该怎么做吗?那个包裹坏了吗?是否有一些全新的(且未记录的)方式来配置 cgroup?

4

1 回答 1

8

作为使用cgroup-binlook at的替代方法systemd,它使用 cgroups 对用户的进程进行分组/分离,并且资源控制器的使用应该没问题。

但是,在下面我将尝试回答您的原始问题cgroup-bin

由于存在多个问题,因此我逐步介绍:

软件包中缺少初始化脚本。然而,有/usr/share/doc/cgroup-bin/examples/cgred一部分工作(cgrulesengd在系统启动时为我启动,但尚未重新启动守护程序)。在使用之前删除一些在 debian 中不存在的 init-functions 的行。但是,您也可以通过/etc/rc.local.

我有以下cgconfig.conf

mount {
  cpu    = /sys/fs/cgroup ;
  cpuset = /sys/fs/cgroup ;
  memory = /sys/fs/cgroup ;
}

group users {
  memory {
    memory.soft_limit_in_bytes = 512M;
    memory.limit_in_bytes = 1G;
  }

# cpuset seems to be obligatory, adjust the parameters
  cpuset {
    cpuset.cpus = 0-7 ;
    cpuset.mems = 0 ;
  }
}

要加载 cgconfig.conf,请执行cgconfigparser -l /etc/cgconfig.conf. 您可以/etc/rc.local在启动时执行此操作。

Debian默认在内核中禁用该memory子系统,因此需要时需要激活它:设置内核命令行/etc/default/grub以加载内存子系统:GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory". 调用update-grub并重新启动。

你现在应该有一个挂载的 cgroup 文件系统,里面/sys/fs/cgroup有一个users目录。

尝试cgexec -g memory,cpuset:users <command>观察 syslog 是否有错误。

于 2014-01-28T17:08:40.170 回答