1

与 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 中。但是这些新设置对我不起作用。任何人都知道上面的配置有什么问题。

4

3 回答 3

2

为了工作/etc/cgconfig.d/目录,您必须添加:

$CGCONFIGPARSER_BIN -L /etc/cgconfig.d/

后:

$CGCONFIGPARSER_BIN -l $CONFIG_FILE 

文件中的行/etc/init.d/cgconfig

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

于 2018-09-03T10:27:49.460 回答
1

在 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
于 2020-01-03T22:04:47.193 回答
0

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

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

https://askubuntu.com/a/94743/170177

于 2015-04-10T01:31:13.853 回答