随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中。 但这些新设置对我来说并不起作用。 任何人都知道上面的配置有什么问题。
答案 0 :(得分:0)
您误解了cgroup的工作原理。坐骑是任意的。您的组声明在挂载中创建新目录。永远不需要组合子系统目录,这样做将使得无法单独控制任务,因为它们都使用类似的目录结构。它很可能会导致cgroup完全失败。
您已经拥有的坐骑很好,您设置的群组将按原样运行。您只需要引用组名和子系统。组合坐骑不会有任何区别。
答案 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上似乎不再是这种情况。这是我修复它的方法:
sudo cp /usr/lib/systemd/system/cgconfig.service \
/etc/systemd/system/cgconfigd.service
编辑文件:
-l /etc/cgconfig.conf
更改为-L /etc/cgconfig.d
。[Unit]
下,添加After=cgconfig.service
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable cgconfigd
sudo systemctl start cgconfigd