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> 列为有效语法,但是,所以我不确定到底发生了什么。无论哪种方式,当指定控制器时它都能正常工作。