我正在尝试遵循有关cgroup的指南,例如this one。我不太确定要清楚cgroups目前应该如何工作。但是我确定一件事:我找到的所有指南都记录了/etc/cgconfig.conf
和/etc/cgrules.conf
的用法。这些文件应该由两个守护进程加载,我认为应该将其命名为cgred
和cgconfig
。
在Debian Squeeze下,似乎这两个守护程序是通过安装cgroup-bin
自动安装的。但是在Wheezy中,这些守护进程不再存在于http://packages.debian.org/fr/wheezy/amd64/cgroup-bin/filelist包中。
我只是试图创建某种共享托管解决方案,并且想限制用户的RAM使用率。有人告诉我有关cgroup的信息,并想尝试一下,但是我不了解如何在Wheezy中使用该版本,并且找不到任何文档可以帮助我。
有人可以告诉我该怎么做吗?那包坏了吗?是否有一些全新的(未公开的)配置cgroup的方法?
最佳答案
作为使用cgroup-bin
的替代方法,请查看systemd
,它使用cgroup分组/分离用户进程,并且使用资源 Controller 应该可以。
但是,下面我将尝试回答关于cgroup-bin
的原始问题
由于存在多个问题,因此我逐步完成:
软件包中缺少初始化脚本。但是,有一部分/usr/share/doc/cgroup-bin/examples/cgred
可以正常工作(在系统引导时为我启动cgrulesengd
,但尚未重新启动守护程序)。在使用debian之前,请删除源代码中包含一些init功能的init函数。但是,您也可以通过/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
并重新启动。现在,您应该在
/sys/fs/cgroup
中具有一个已装入的cgroup文件系统,并且其中包含users
目录。尝试
cgexec -g memory,cpuset:users <command>
并查看系统日志中的错误。关于debian - 尝试在Debian Wheezy中使用cgroups并且没有守护进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21337522/