RHEL:A组的cgroup更改失败
问题描述:
当我运行下面的命令,我得到cgroup change of group failed
:RHEL:A组的cgroup更改失败
cgexec --sticky -g *:/throttle some_task
CGROUP throttle
在cgconfig.conf定义,它看起来像这样:
# Configuration file generated by cgsnapshot
mount {
cpuset = /cgroup/cpuset;
cpu = /cgroup/cpu;
cpuacct = /cgroup/cpuacct;
memory = /cgroup/memory;
devices = /cgroup/devices;
freezer = /cgroup/freezer;
net_cls = /cgroup/net_cls;
blkio = /cgroup/blkio;
}
group throttle {
cpu {
cpu.rt_period_us="1000000";
cpu.rt_runtime_us="0";
cpu.cfs_period_us="1000000";
cpu.cfs_quota_us="500000";
cpu.shares="1024";
}
}
group throttle {
memory {
memory.memsw.failcnt="0";
memory.limit_in_bytes="1073741824";
memory.memsw.max_usage_in_bytes="0";
memory.move_charge_at_immigrate="0";
memory.swappiness="60";
memory.use_hierarchy="0";
memory.failcnt="0";
memory.soft_limit_in_bytes="134217728";
memory.memsw.limit_in_bytes="1073741824";
memory.max_usage_in_bytes="0";
}
}
group throttle {
blkio {
blkio.throttle.write_iops_device="8:0 10";
blkio.throttle.read_iops_device="8:0 10";
blkio.throttle.write_bps_device="";
blkio.throttle.read_bps_device="";
blkio.weight="500";
blkio.weight_device="";
}
}
我已经搜索了很多,并没有线索如何开始解决这个问题。这似乎通常与不正确的权限相关联。但是,我没有定义权限(cgroups的文档说这是可选的)。我以root身份运行该进程。
答
想通了。出于某种原因,我的系统上的cgexec不喜欢控制器的通配符(*
)。当我按名称列出控制器,它的工作:
cgexec --sticky -g "cpu,memory,blkio":/throttle some_task
为cgexec
我的系统上的手册页列出*:<group_name>
作为有效的语法,但是,所以我不知道到底是怎么回事。无论哪种方式,当控制器被指定时它都能正常工作。
如果你写''*:/ throttle'',会发生什么?用引号?壳牌扩张会毁了这个吗?如果是的话,我很惊讶,manpage并没有警告它,但是... –