第 24 章 使用 cgroups-v2 控制应用程序的 CPU 时间分布
通过将应用放入控制组版本 2 (cgroups-v2)来防止资源耗尽。通过为这些组配置 CPU 限制,您可以控制 CPU 消耗并确保系统稳定性。
关于如何控制分配给控制组群的 CPU 时间分布,用户有两种方法:
24.1. 挂载 cgroups-v2 复制链接链接已复制到粘贴板!
RHEL 8 默认挂载 cgroups-v1。手动将系统配置为使用 cgroups-v2 进行资源限制。您可以使用 systemd 控制资源使用情况。在特殊情况下,您必须手动配置 cgroups,例如使用没有 cgroups-v2 的 cgroups-v1 控制器。
先决条件
- 您有 root 权限。
流程
将系统配置为系统默认由 systemd 系统和服务管理器在系统引导过程中挂载
cgroups-v2:# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=1"这会向当前引导条目中添加必要的内核命令行参数。
向所有内核引导条目中添加
systemd.unified_cgroup_hierarchy=1参数:# grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"- 重启系统以使更改生效。
验证
验证
cgroups-v2文件系统是否已挂载:# mount -l | grep cgroup cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate)cgroups-v2文件系统已成功挂载到/sys/fs/cgroup/目录。检查
/sys/fs/cgroup/目录的内容:# ll /sys/fs/cgroup/ -r—r—r--. 1 root root 0 Apr 29 12:03 cgroup.controllers -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.max.depth -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.max.descendants -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.procs -r—r—r--. 1 root root 0 Apr 29 12:03 cgroup.stat -rw-r—r--. 1 root root 0 Apr 29 12:18 cgroup.subtree_control -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.threads -rw-r—r--. 1 root root 0 Apr 29 12:03 cpu.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 cpuset.cpus.effective -r—r—r--. 1 root root 0 Apr 29 12:03 cpuset.mems.effective -r—r—r--. 1 root root 0 Apr 29 12:03 cpu.stat drwxr-xr-x. 2 root root 0 Apr 29 12:03 init.scope -rw-r—r--. 1 root root 0 Apr 29 12:03 io.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 io.stat -rw-r—r--. 1 root root 0 Apr 29 12:03 memory.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 memory.stat drwxr-xr-x. 69 root root 0 Apr 29 12:03 system.slice drwxr-xr-x. 3 root root 0 Apr 29 12:18 user.slice默认情况下,
/sys/fs/cgroup/目录也称为 root 控制组,提供接口文件(通过cgroup启动)和特定于控制器的文件,如cpuset.cpus.effective。此外,存在一些与 systemd 相关的目录,如/sys/fs/cgroup/init.scope、/sys/fs/cgroup/system.slice和/sys/fs/cgroup/user.slice。