Red Hat Training

A Red Hat training course is available for RHEL 8

44.5. systemd によるコントロールグループバージョン 1 の使用

以下のセクションでは、コントロールグループ (cgroups) の作成、変更、および削除に関連するタスクを概説します。systemd システムおよびサービスマネージャーが提供するユーティリティーは、cgroups 管理の推奨の方法であり、今後サポートされる予定です。

44.5.1. systemd によるコントロールグループバージョン 1 の作成

systemd システムおよびサービスマネージャーを使用して、一時的および永続的なコントロールグループ (cgroup) を作成し、プロセスのグループのハードウェアリソースへの制限、優先順位付け、または制御を設定できます。

44.5.1.1. 一時的なコントロールグループの作成

一時的な cgroups は、ランタイム時にユニット (サービスまたはスコープ) が消費するリソースに制限を設定します。

手順

  • 一時的なコントロールグループを作成するには、以下の形式で systemd-run コマンドを使用します。

    # systemd-run --unit=<name> --slice=<name>.slice <command>

    このコマンドは、一時的なサービスまたはスコープユニットを作成して開始し、そのユニットでカスタムコマンドを実行します。

    • --unit=<name> オプションは、ユニットに名前を指定します。--unit が指定されていないと、名前は自動的に生成されます。
    • --slice=<name>.slice オプションは、サービスまたはスコープユニットを指定のスライスのメンバーにします。<name>.slice は、既存のスライスの名前 (systemctl -t slice の出力に表示) に置き換えるか、または一意の名前を指定して新規スライスを作成します。デフォルトでは、サービスおよびスコープは system.slice のメンバーとして作成されます。
    • <command> は、サービスまたはスコープユニットで実行するコマンドに置き換えます。

      以下のような、サービスまたはスコープが正常に作成され開始したことを確認するメッセージが表示されます。

      # Running as unit <name>.service
  • 必要に応じて、ランタイム情報を収集するため、プロセスが終了した後もユニットを実行したままにします。

    # systemd-run --unit=<name> --slice=<name>.slice --remain-after-exit <command>

    コマンドは、一時的なサービスユニットを作成して開始し、そのユニットでカスタムコマンドを実行します。--remain-after-exit オプションを使用すると、プロセスの終了後もサービスが実行し続けます。

関連情報

44.5.1.2. 永続的なコントロールグループの作成

永続的なコントロールグループをサービスに割り当てるには、そのユニット設定ファイルを編集する必要があります。この設定はシステム再起動後も保存されるので、これを使用して自動的に起動されたサービスを管理できます。

手順

  • 永続的なコントロールグループを作成するには、次のコマンドを実行します。

    # systemctl enable <name>.service

    上記のコマンドは、ユニット設定ファイルを自動的に /usr/lib/systemd/system/ ディレクトリーに作成し、デフォルトで <name>.servicesystem.slice ユニットに割り当てます。

関連情報