创建问题来自论坛所以我可以在这里回答并留给其他人,因为我花了很长时间来调试这个问题
你好,
我想要测试以下内容:用户 testuser 的进程 bzip2 进入组 cpuhungry,该组只允许使用核心 1,而不允许使用核心 0。
/etc/cgrules.conf
testuser:bzip2 cpuset cpuhungry/;
/etc/cgconfig.conf
mount {
cpuset = /mnt/cgroups/cpuset;
}
group cpuhungry {
cpuset {
cpuset.cpus = 1
}
}
我尝试过几次初始化脚本,但我猜它坏了。看起来你需要运行
cgconfigparser -l /etc/cgconfig.conf
首先设置挂载,初始化脚本错过了这个步骤。
通过以下方式启动守护进程:
sudo cgrulesengd -d
结果为:
CGroup Rules Engine Daemon log started
Current time: Fri Jul 29 11:32:53 2011
Opened log file: -, log facility: 0, log level: 7
Proceeding with PID 9527
Rule: testuser:bzip2
UID: 1000
GID: N/A
DEST: cpuhungry/
CONTROLLERS:
cpuset
Started the CGroup Rules Engine Daemon.
.
.
.
Cgroup change for PID: 9528, UID: 1000, GID: 1000, PROCNAME: /bin/bzip2 FAILED! (Error Code: 50016)
GID Event: PID = 1950, tGID = 1950, rGID = 0, eGID = 122
错误代码 50016 当然没有记录,谷歌搜索中也没有弹出任何内容。
任何想法如何解决这一问题?
答案1
导致此错误的原因是cpuset.mems
资源未填充,要解决此问题,只需使用以下任一方法填充它即可
跑步
echo 0 > /sys/fs/cgroup/cpuset/cpuhungry/cpuset.mems
或者
cgset -r cpuset.mems=0 cpuhungry
或者更新 /etc/cgconfig.conf
mount {
cpuset = /mnt/cgroups/cpuset;
}
group cpuhungry {
cpuset {
cpuset.cpus = 1
cpuset.mems = 0
}
}