34.4. cgroups の systemd 階層の概要
バックエンドでは、systemd システムおよびサービスマネージャーが slice、scope、および service ユニットを使用して、コントロールグループ内のプロセスを整理および構造化します。カスタムユニットファイルを作成するか、systemctl コマンドを使用して、この階層をさらに変更できます。また、systemd は、重要なカーネルリソースコントローラーの階層を /sys/fs/cgroup/ ディレクトリーに自動的にマウントします。
リソース制御には、次の 3 つの systemd ユニットタイプを使用できます。
- サービス
ユニット設定ファイルに従って
systemdが起動したプロセスまたはプロセスのグループ。サービスは、指定したプロセスをカプセル化して、1 つのセットとして起動および停止できるようにします。サービスの名前は以下の方法で指定されます。
<name>.service
<name>.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Scope
外部で作成されたプロセスのグループ。スコープは、
fork()関数を介して任意のプロセスで開始および停止されたプロセスをカプセル化し、ランタイム時にsystemdで登録します。たとえば、ユーザーセッション、コンテナー、および仮想マシンはスコープとして処理されます。スコープの名前は以下のように指定されます。<name>.scope
<name>.scopeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - スライス
階層的に編成されたユニットのグループ。スライスは、スコープおよびサービスを配置する階層を編成します。
実際のプロセスはスコープまたはサービスに含まれます。スライスユニットの名前はすべて、階層内の場所へのパスに対応します。
ハイフン (
-) 文字は、-.sliceルートスライスからスライスへのパスコンポーネントの区切り文字として機能します。以下の例では、下記の点を前提としています。<parent-name>.slice
<parent-name>.sliceCopy to Clipboard Copied! Toggle word wrap Toggle overflow parent-name.sliceはparent.sliceのサブスライスで、これは-.sliceroot スライスのサブスライスです。parent-name.sliceには、parent-name-name2.sliceという名前の独自のサブスライスを指定できます。
サービス、スコープ、スライス ユニットは、コントロールグループ階層のオブジェクトに直接マッピングされます。これらのユニットがアクティブになると、ユニット名から構築されるグループパスを制御するように直接マッピングされます。
以下は、コントロールグループ階層の省略形の例です。
上記の例では、サービスおよびスコープにプロセスが含まれており、独自のプロセスを含まないスライスに置かれていることを示しています。