RHEL:组的 cgroup 更改失败
RHEL: cgroup change of group failed
当我 运行 以下命令时,我得到 cgroup change of group failed
:
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>
列为有效语法,但是,所以我不确定到底发生了什么。无论哪种方式,当指定控制器时它都能正常工作。
当我 运行 以下命令时,我得到 cgroup change of group failed
:
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>
列为有效语法,但是,所以我不确定到底发生了什么。无论哪种方式,当指定控制器时它都能正常工作。