RHEL:A组的cgroup更改失败

问题描述:

当我运行下面的命令,我得到cgroup change of group failedRHEL: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>作为有效的语法,但是,所以我不知道到底是怎么回事。无论哪种方式,当控制器被指定时它都能正常工作。

+0

如果你写''*:/ throttle'',会发生什么?用引号?壳牌扩张会毁了这个吗?如果是的话,我很惊讶,manpage并没有警告它,但是... –