linux - cgroups 工作良好,直到重新加载配置(挂载)

标签 linux cgroups

我已经解决这个问题很长时间了 - cgroups 只是不想在再次重新加载配置文件时工作(挂载在挂载上),每次都必须重新启动才能使更改生效。

这是我的步骤:

(1.)操作系统全新启动。 (2.)cgsnapshot -s

# Configuration file generated by cgsnapshot
mount {
    cpuset = /sys/fs/cgroup/cpuset;
    cpu = /sys/fs/cgroup/cpu;
    cpuacct = /sys/fs/cgroup/cpuacct;
    memory = /sys/fs/cgroup/memory;
    devices = /sys/fs/cgroup/devices;
    freezer = /sys/fs/cgroup/freezer;
    net_cls = /sys/fs/cgroup/net_cls;
    blkio = /sys/fs/cgroup/blkio;
    perf_event = /sys/fs/cgroup/perf_event;
}

(3.)cgclear(4.)cgsnapshot -s

# Configuration file generated by cgsnapshot

(5.)cgconfigparser -l/etc/cgconfig.conf (6.)cgsnapshot -s

mount {
    cpu = /cgroup/cpu_mem_blkio;
    cpuacct = /cgroup/cpu_mem_blkio;
    memory = /cgroup/cpu_mem_blkio;
    blkio = /cgroup/cpu_mem_blkio;
}
group hello1 {
...
group hello2 {
...

(7.)bash脚本/etc/rc.d/rc.cgred start

现在一切正常,但是当我这样做时(相同的配置):

(8.)cgclear (9.)cgconfigparser -l/etc/cgconfig.conf

它永远挂起,当我使用 strace 时,它​​停止在:

mount("cgroup", "/cgroup/cpu_mem_blkio", "cgroup", 0, "cpu,cpuacct,blkio,memory") = ? ERESTARTNOINTR (To be restarted)

有人能指出我出了什么问题吗? 如何在不重新启动的情况下添加新组? 这是 cgroup 的正常行为吗?

我什至尝试从 here 添加此补丁:

--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
 <at>  <at>  -1909,7 +1909,7  <at>  <at>  static void cgroup_kill_sb(struct super_block *sb)
     *
     * And don't kill the default root.
     */
-   if (css_has_online_children(&root->cgrp.self) ||
+   if (!list_empty(&root->cgrp.self.children) ||
        root == &cgrp_dfl_root)
        cgroup_put(&root->cgrp);
    else

仍在测试,但看起来是一样的。

最佳答案

看起来正确的方法是从命令行设置所有内容。

mount -t cgroup -o cpu,memory,blkio,cpuacct cpu_mem_blkio /cgroup/cpu_mem_blkio
mkdir /cgroup/cpu_mem_blkio/hello1
mkdir /cgroup/cpu_mem_blkio/hello2
echo 200 > /cgroup/cpu_mem_blkio/hello1/cpu.shares
echo 200M > /cgroup/cpu_mem_blkio/hello1/memory.limit_in_bytes
echo 400M > /cgroup/cpu_mem_blkio/hello1/memory.memsw.limit_in_bytes
echo 100 > /cgroup/cpu_mem_blkio/hello1/blkio.weight
...

关于linux - cgroups 工作良好,直到重新加载配置(挂载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32486277/

相关文章:

linux - 将 x 个文件 move 到新文件夹

cpu - echo $$>尝试使用cpuset时,任务会给出 "no space left on device"

c - C套接字客户端程序中2个进程之间使用共享内存会导致段错误

python - Linux : stdout of one program to stdin of another program

linux - 如何查找大目录?

c++ - 共享库的动态链接或动态加载?

Elasticsearch:最大虚拟内存区域 vm.max_map_count [65530] 太低,至少增加到 [262144]

kubernetes - 如果容器未与主机共享内核,则解析cgroup文件以获取统计信息是否可行?

ubuntu - 基于 Alpine 的 Docker 镜像在 Ubuntu 主机上完全兼容?

linux - LSF - 为作业挂载 cgroups.cpuset