

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 限制 AL2023 中的程序資源使用量 cgroups
<a name="resource-limiting-raw-cgroups"></a>

 雖然建議使用 [使用 進行資源控制 systemd](resource-limiting-systemd.md)，但本節涵蓋基本`libcgroup-tools`公用程式的基本使用量，以限制程序的 CPU 和記憶體使用量。這兩種方法都是使用 [`cpulimit`](epel.md#cpulimit)公用程式的替代方案，先前在 中找到[EPEL](epel.md)。

 以下範例涵蓋執行`stress-ng`壓力測試 （來自`stress-ng`套件），同時使用`libcgroup-tools`套件中的公用程式限制其 CPU 和記憶體用量，以及 中的調校`sysfs`。

**在命令列`libcgroup-tools`上使用 來限制資源使用量**

1.  安裝 `libcgroup-tools` 套裝服務。

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

1.  `cgroup` 使用 `memory`和 `cpu`控制器建立 ，並為其命名 (`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 使用 `cgroup-v1` `cgroup-v2` 而非用於 AL2023。在 AL2 上，`sysfs`路徑不同，而且 擁有的 `/sys/fs/cgroup/memory/our-example-limits`和 `/sys/fs/cgroup/cpu/our-example-limits` 目錄將`ec2-user`包含可用於控制 限制的檔案`cgroup`。

1.  將 中所有程序的記憶體用量限制`cgroup`在 1 億位元組。

   ```
   [ec2-user ~]$ echo {{100000000}} > /sys/fs/cgroup/{{our-example-limits}}/memory.max
   ```
**注意**  
 Amazon Linux 2 使用 `cgroup-v1`而非 `cgroup-v2` Amazon Linux 2023 使用的 。這表示某些可調整項目不同。若要限制 AL2 上的記憶體用量，請改用下列可調校功能。  

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

1.  將 中所有程序的 CPU 用量限制`cgroup`為 10%。檔案的格式`cpu.max`為 `$MAX $PERIOD`，限制 群組`$MAX`針對每個 消耗 `$PERIOD`。

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

    Amazon Linux 2 使用 `cgroup-v1`而非 `cgroup-v2` Amazon Linux 2023 使用的 。這表示某些可調整項目不同，包括如何限制 CPU 用量。

1.  以下範例會在 中執行 `our-example-limits` `stress-ng`（可透過執行 來安裝`dnf install -y stress-ng`)cgroup。`stress-ng` 命令執行時，您可以使用 觀察`top`其限制為 10% CPU的時間。

   ```
   [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)控制器的文件涵蓋了如何使用每個可調整選項的詳細資訊。