如何使用cgconfig.d覆盖默认的cgroup cgconfig.conf?

时间:2015-03-18 19:37:57

标签: linux cgroups

随libcgroup提供的默认cgroup配置文件cgconfig.conf包含:

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;
}

我想使用这样的东西:

mount {
    cpuset = /cgroup/cpu_and_mem;
    cpu = /cgroup/cpu_and_mem;
    cpuacct = /cgroup/cpu_and_mem;
    memory = /cgroup/cpu_and_mem;
 }

group cpu_memory_high {
  cpu {
      cpu.shares = 800;
  }
  cpuset {
      cpuset.cpus="0-6";
  }
  memory {
      memory.limit_in_bytes = 5G;
  }
}

group cpu_memory_low {
 cpu {
     cpu.share = 200;
 }
 cpuset {
     cpuset.cpus="8"
 }
 memory {
     memory.limit_in_bytes = 500M;
 }
}

我不想覆盖cgconfig.conf,因此我尝试在新文件abc.conf中将cgconfig.d与上述设置一起使用并将其放在cgconfig.d中。 但这些新设置对我来说并不起作用。 任何人都知道上面的配置有什么问题。

3 个答案:

答案 0 :(得分:0)

您误解了cgroup的工作原理。坐骑是任意的。您的组声明在挂载中创建新目录。永远不需要组合子系统目录,这样做将使得无法单独控制任务,因为它们都使用类似的目录结构。它很可能会导致cgroup完全失败。

您已经拥有的坐骑很好,您设置的群组将按原样运行。您只需要引用组名和子系统。组合坐骑不会有任何区别。

请参阅https://askubuntu.com/a/94743/170177

答案 1 :(得分:0)

要使用/etc/cgconfig.d/目录,您必须添加:

$CGCONFIGPARSER_BIN -L /etc/cgconfig.d/

之后:

$CGCONFIGPARSER_BIN -l $CONFIG_FILE 
/etc/init.d/cgconfig文件中的

行。

它至少可以在Amazon Linux上运行。

答案 2 :(得分:0)

在Centos 7上,默认情况下似乎启用了/etc/cgconfig.d,但在Centos 8上似乎不再是这种情况。这是我修复它的方法:

  1. 将默认的 cgconfig 单元文件复制到 cgconfigd.service
sudo cp /usr/lib/systemd/system/cgconfig.service \
        /etc/systemd/system/cgconfigd.service
  1. 编辑文件:

    • 将两次出现的-l /etc/cgconfig.conf更改为-L /etc/cgconfig.d
    • [Unit]下,添加After=cgconfig.service
  2. 启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable cgconfigd
sudo systemctl start cgconfigd