/etc/cgconfig.conf
...
group memlimit {
memory {
memory.limit_in_bytes = 8589934592;
}
}
group cpulimit {
cpu {
cpu.shares = 1024;
}
}
/etc/cgrules.conf:
@gatewayer memory memlimit/
@gatewayer cpu cpulimit/
我已经通过命令重新启动了服务:
service cgconfig restart
service cgred restart
在我从属于组gatewayer
的用户执行我的python脚本后,我可以在执行cat /cgroup/memory/memlimit/cgroup.procs
时看到PID并且已对运行的进程应用了限制。但是,对cpu的限制不会生效,cat /cgroup/cpu/cpulimit/cgroup.procs
不会按预期打印PID。
我试图检查进程,结果是相同的结果,内存受cgroups的限制,而cpu不是:
$ cat /proc/18113/cgroup
174:blkio:/
173:net_cls:/
172:freezer:/
171:devices:/
170:memory:/memlimit
169:cpuacct:/
168:cpu:/
167:cpuset:/
有人能给我一些帮助吗?非常感谢。
答案 0 :(得分:0)
似乎应该正确应用cgroups设置cpu.shares
。
现代计算机通常有一个多核cpu。用于测试的python脚本只能使用100%的一个核心。因此,如果仍有空闲的cpu核心,则另一个脚本也可以使用该核心的100%。
测试cpu.shares
的更好方法是运行多个进程,而不是cpu核心数。
cat /proc/cpuinfo
表示cpu核心数。