Red Hat Training
A Red Hat training course is available for RHEL 8
第 25 章 使用带有 systemd 的控制组群版本 1
您可以使用 systemd
系统和服务管理器及其提供的实用程序来管理 cgroups
。这也是 cgroups
管理的首选方式。
25.1. 控制组群版本 1 中的 systemd 角色
RHEL 8 通过将 cgroup
层次结构与 systemd
单元树绑定,将资源管理设置从进程级移到应用程序级。因此,您可以使用 systemctl
命令或通过修改 systemd
单元文件来管理系统资源。
默认情况下,systemd
系统和服务管理器利用 slice
、scope
和 service
单元来整理和整理控制组中的进程。systemctl
命令允许您通过创建自定义 slices
来进一步修改此结构。另外,systemd
会在 /sys/fs/cgroup/
目录中自动挂载重要内核资源控制器的层次结构。
三种 systemd
单元类型用于资源控制:
Service -
systemd
根据单元配置文件启动的进程或一组进程。服务封装指定的进程,以便它们可以作为一个集启动和停止。服务使用以下方法命名:<name>.service
Scope - 外部创建的进程组。范围封装通过
fork()
函数由任意进程启动和停止的进程,然后在运行时由systemd
注册。例如,用户会话、容器和虚拟机被视为范围。范围命名如下:<name>.scope
slice - 一组分级组织单元。片段组织了一个分级,其中放置范围和服务。实际的进程包含在范围或服务中。slice 单元的每个名称对应层次结构中的位置的路径。短划线 ("-") 字符充当了分隔符的作用,它把路径组件从
-.slice
root slice 中分隔。在以下示例中:<parent-name>.slice
parent-name.slice
是parent.slice
的子分片,它是-.slice
root 片段的子分片。parent-name.slice
可以有自己的子slice 名为parent-name-name2.slice
,以此类推。
service
、scope
和 slice
单元直接映射到控制组层次结构中的对象。激活这些单元后,它们直接映射到从单元名称构建的控制组路径。
以下是控制组群分级的缩写示例:
Control group /: -.slice ├─user.slice │ ├─user-42.slice │ │ ├─session-c1.scope │ │ │ ├─ 967 gdm-session-worker [pam/gdm-launch-environment] │ │ │ ├─1035 /usr/libexec/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart │ │ │ ├─1054 /usr/libexec/Xorg vt1 -displayfd 3 -auth /run/user/42/gdm/Xauthority -background none -noreset -keeptty -verbose 3 │ │ │ ├─1212 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart │ │ │ ├─1369 /usr/bin/gnome-shell │ │ │ ├─1732 ibus-daemon --xim --panel disable │ │ │ ├─1752 /usr/libexec/ibus-dconf │ │ │ ├─1762 /usr/libexec/ibus-x11 --kill-daemon │ │ │ ├─1912 /usr/libexec/gsd-xsettings │ │ │ ├─1917 /usr/libexec/gsd-a11y-settings │ │ │ ├─1920 /usr/libexec/gsd-clipboard … ├─init.scope │ └─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 18 └─system.slice ├─rngd.service │ └─800 /sbin/rngd -f ├─systemd-udevd.service │ └─659 /usr/lib/systemd/systemd-udevd ├─chronyd.service │ └─823 /usr/sbin/chronyd ├─auditd.service │ ├─761 /sbin/auditd │ └─763 /usr/sbin/sedispatch ├─accounts-daemon.service │ └─876 /usr/libexec/accounts-daemon ├─example.service │ ├─ 929 /bin/bash /home/jdoe/example.sh │ └─4902 sleep 1 …
上面的例子显示,服务和范围包含进程,并放置在不含自己进程的片段中。
其它资源
- 什么是内核资源控制器
-
systemd.resource-control(5)
,cgroups(7)
,fork()
,fork(2)
manual pages