制御グループおよびsystemdについて

制御グループは、リソース管理のためにsystemdシステムおよびサービス・マネージャで使用できます。systemdは、これらのグループを使用して、リソースを消費するユニットおよびサービスを編成します。systemdの詳細は、「systemdについて」を参照してください。

systemdは様々なユニット・タイプを提供しており、そのうちの3つはリソース制御を目的としたものです:

  • サービス: ユニット構成ファイルに基づく設定を持つプロセスまたはプロセスのグループ。サービスは、systemdが1つのセットとしてプロセスを開始または停止できるように、指定されたプロセスを「コレクション」に包含します。サービス名はname.serviceの形式に従います。

  • スコープ: ユーザー・セッション、コンテナ、仮想マシンなど、外部で作成されたプロセスのグループ。サービスと同様に、スコープはこれらの作成されたプロセスをカプセル化し、任意のプロセスによって起動または停止され、実行時にsystemdによって登録されます。スコープ名はname.scopeの形式に従います。

  • スライス: サービスとスコープが配置される、階層的に編成されたユニットのグループ。したがって、スライス自体にはプロセスが含まれていません。かわりに、スライス内のスコープおよびサービスによってプロセスが定義されます。スライス・ユニットのすべての名前が、階層内の場所へのパスに対応します。ルート・スライス(通常、すべてのユーザーベースのプロセスの場合はuser.slice、システムベースのプロセスの場合はsystem.slice)が、階層内に自動的に作成されます。親スライスがルート・スライスのすぐ下に存在し、parent-name.sliceという形式に従います。これらのルート・スライスは、複数のレベルのサブスライスを持つことができます。

サービス、スコープおよびスライス・ユニットは、制御グループ階層内のオブジェクトに直接マップされます。これらのユニットがアクティブ化されると、ユニット名から構築される制御グループ・パスに直接マップされます。systemdリソース・ユニット・タイプと制御グループの間のマッピングを表示するには、次のように入力します。

sudo systemd-cgls
Working directory /sys/fs/cgroup:
├─user.slice (#1243)
│ → trusted.invocation_id: 50ce3909b2644f919ee420adc39edb4b
│ ├─user-1001.slice (#4167)
│ │ → trusted.invocation_id: 02e80a960d4549a7a9c69ce0fb546c26
│ │ ├─session-2.scope (#4405)
│ │ │ ├─2417 sshd: alice [priv]
│ │ │ ├─2430 sshd: alice@pts/0
│ │ │ ├─2431 -bash
│ │ │ ├─2689 sudo systemd-cgls
│ │ │ ├─2691 systemd-cgls
│ │ │ └─2692 less
...
│   └─user@984.service … (#3827)
│     → trusted.delegate: 1
│     → trusted.invocation_id: 09b47ce9f3124239b75814114353f3f2
│     └─init.scope (#3861)
│       ├─2058 /usr/lib/systemd/systemd --user
│       └─2099 (sd-pam)
├─init.scope (#19)
│ └─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
└─system.slice (#53)
...
  ├─chronyd.service (#2467)
  │ → trusted.invocation_id: c0f77aaa9c7844e6bef6a6898ae4dd56
  │ └─1358 /usr/sbin/chronyd -F 2
  ├─auditd.service (#2331)
  │ → trusted.invocation_id: 756808add6a348609316c9e8c1801846
  │ └─1310 /sbin/auditd
  ├─tuned.service (#3079)
  │ → trusted.invocation_id: 2c358135fc46464d862b05550338d4f4
  │ └─1415 /usr/bin/python3 -Es /usr/sbin/tuned -l -P
  ├─systemd-journald.service (#1651)
  │ → trusted.invocation_id: 7cb7ccb14e044a899aadf47bbb583ada
  │ └─977 /usr/lib/systemd/systemd-journald
  ├─atd.service (#3623)
  │ → trusted.invocation_id: 597a7a4e5646468db407801b8562d869
  │ └─1915 /usr/sbin/atd -f
  ├─sshd.service (#3419)
  │ → trusted.invocation_id: 490504a683fc4311ab0fbeb0864a1a34
  │ └─1871 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
...

systemctlなどのsystemdコマンドを使用してリソースを管理する方法の例は、システム・リソースへのアクセスの制御を参照してください。技術的な詳細は、systemctl(1)systemd-cgls(1)、およびsystemd.resource-control(5)の各マニュアル・ページを参照してください。