第25章 systemd によるコントロールグループバージョン 1 の使用
cgroup
は、systemd
システムとサービスマネージャー、およびそれらが提供するユーティリティーを使用して管理できます。これは、cgroups
管理の推奨される方法でもあります。
25.1. コントロールグループバージョン 1 における systemd のロール
RHEL 8 では、cgroup
階層のシステムを systemd
ユニットツリーにバインドすることにより、リソース管理設定をプロセスレベルからアプリケーションレベルに移行します。したがって、システムリソースは、systemctl
コマンドを使用するか、systemd
ユニットファイルを変更して管理できます。
デフォルトでは、systemd
システムおよびサービスマネージャーは、slice
、scope
、および service
ユニットを使用して、コントロールグループ内のプロセスを整理および構造化します。systemctl
コマンドは、カスタム slices
を作成することで、この構造をさらに変更できます。また、systemd
は、重要なカーネルリソースコントローラーの階層を /sys/fs/cgroup/
ディレクトリーに自動的にマウントします。
systemd
の 3 つのユニットタイプは、リソース制御に使用します。
Service - ユニット設定ファイルに従って
systemd
が起動したプロセスまたはプロセスのグループ。サービスは、指定したプロセスをカプセル化して、1 つのセットとして起動および停止できるようにします。サービスの名前は以下の方法で指定されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <name>.service
<name>.service
スコープ - 外部で作成されたプロセスのグループ。スコープは、
fork()
関数を介して任意のプロセスで開始および停止されたプロセスをカプセル化し、ランタイム時にsystemd
で登録します。たとえば、ユーザーセッション、コンテナー、および仮想マシンはスコープとして処理されます。スコープの名前は以下のように指定されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <name>.scope
<name>.scope
スライス - 階層的に編成されたユニットのグループ。スライスは、スコープおよびサービスを配置する階層を編成します。実際のプロセスは、スコープまたはサービスに含まれます。スライスユニットの名前はすべて、階層内の場所へのパスに対応します。ハイフン (-) 文字は、
-.slice
ルートスライスからのスライスへのパスコンポーネントの区切り文字として機能します。次の例では、プロセスを含むサービスとスコープは、独自のプロセスを持たないスライスに配置されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <parent-name>.slice
<parent-name>.slice
parent-name.slice
はparent.slice
のサブスライスで、これは-.slice
root スライスのサブスライスです。parent-name.slice
には、parent-name-name2.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 …
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)
man ページ