

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# cgroups を使用して AL2023 でプロセスのリソース使用量を制限する
<a name="resource-limiting-raw-cgroups"></a>

 [systemd によるリソースコントロール](resource-limiting-systemd.md) を使用することが推奨されますが、このセクションでは、基本の `libcgroup-tools` ユーティリティを使ってプロセスの CPU とメモリの使用量を制限する基本的な方法を説明します。どちらも、以前 [EPEL](epel.md) に含まれていた [`cpulimit`](epel.md#cpulimit) ユーティリティの代わりに使用できる手段です。

 以下の例では、`libcgroup-tools` パッケージのユーティリティと `sysfs` の調整可能なオプションを使用して CPU とメモリの使用量を制限しながら、(`stress-ng` パッケージから) `stress-ng` ストレステストを実行する方法について説明します。

**コマンドラインで `libcgroup-tools` を使用してリソース使用量を制限する**

1.  `libcgroup-tools` パッケージをインストールします。

   ```
   [ec2-user ~]$ sudo dnf install libcgroup-tools
   ```

1.  `memory` および `cpu` コントローラーを使用して `cgroup` を作成し、名前 (`our-example-limits`) を付けます。`-a` および `-t` オプションを使用して、`ec2-user` ユーザーが `cgroup` の調整可能なオプションを制御できるようにします。

   ```
   [ec2-user ~]$ sudo cgcreate -a ec2-user -t ec2-user -g memory,cpu:our-example-limits
   ```

    `/sys/fs/cgroup/our-example-limits/` ディレクトリが追加されており、調整可能な各オプションの制御に使用できるファイルが含まれています。
**注記**  
 Amazon Linux 2 では、AL2023 で使用される `cgroup-v1` ではなく `cgroup-v2` を使用します。AL2 では `sysfs` のパスが異なり、`ec2-user` が所有する `/sys/fs/cgroup/memory/our-example-limits` および `/sys/fs/cgroup/cpu/our-example-limits` ディレクトリに、`cgroup` の制限を制御するために使用できるファイルが格納されています。

1.  `cgroup` のすべてのプロセスのメモリ使用量を 1 億バイトに制限します。

   ```
   [ec2-user ~]$ echo 100000000 > /sys/fs/cgroup/our-example-limits/memory.max
   ```
**注記**  
 Amazon Linux 2 では、Amazon Linux 2023 が使用する `cgroup-v2` ではなく `cgroup-v1` を使用します。つまり、調整可能なオプションが一部異なります。AL2 でメモリ使用量を制限するには、代わりに以下の調整可能なオプションが使用されます。  

   ```
   [ec2-user ~]$ echo 10000000 > /sys/fs/cgroup/memory/our-example-limits/memory.limit_in_bytes
   ```

1.  `cgroup` のすべてのプロセスの CPU 使用率を 10% に制限します。`cpu.max` ファイルの形式は `$MAX $PERIOD` で、グループの使用量が `$PERIOD` につき `$MAX` に制限されます。

   ```
   [ec2-user ~]$ echo 10000 100000 > /sys/fs/cgroup/our-example-limits/cpu.max
   ```

    Amazon Linux 2 では、Amazon Linux 2023 が使用する `cgroup-v2` ではなく `cgroup-v1` を使用します。つまり、CPU 使用率の制限方法など、調整可能なオプションが一部異なります。

1.  以下の例では、`our-example-limits` cgroup で `stress-ng` (`dnf install -y stress-ng` を実行してインストール可能) を実行します。`stress-ng` コマンドの実行中に、`top` コマンドを使用して、使用率が CPU 時間の 10% に制限されていることを確認できます。

   ```
   [ec2-user ~]$ sudo cgexec -g memory,cpu:our-example-limits stress-ng --cpu 1
   ```

1. cgroup を削除してクリーンアップします。

   ```
   [ec2-user ~]$ sudo cgdelete -g memory,cpu:our-example-limits
   ```

 [Linux カーネルの `cgroup-v2` のドキュメント](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html)には、その仕組みに関する詳細な情報が含まれています。[CPU](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html#cpu) および[メモリ](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html#memory)コントローラーのドキュメントでは、調整可能な各オプションの使用方法について詳しく説明しています。