

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# cgroups를 사용하여 AL2023에서 프로세스 리소스 사용 제한
<a name="resource-limiting-raw-cgroups"></a>

 [systemd를 사용한 리소스 제어](resource-limiting-systemd.md) 섹션을 사용하는 것이 좋지만, 이 섹션에서는 프로세스의 CPU 및 메모리 사용량을 제한하기 위한 기본 `libcgroup-tools` 유틸리티의 기본 사용량을 다룹니다. 두 방법 모두 이전에 [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-v2` 대신 `cgroup-v1`을 사용합니다. AL2에서는 `sysfs` 경로가 다르며, `cgroup`의 제한을 제어하는 데 사용할 수 있는 파일이 포함된 `ec2-user` 소유의 `/sys/fs/cgroup/memory/our-example-limits` 및 `/sys/fs/cgroup/cpu/our-example-limits` 디렉터리가 있습니다.

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}}
   ```

 [`cgroup-v2`용 Linux 커널 설명서](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) 컨트롤러 설명서에서는 각 튜닝 가능 옵션을 사용하는 방법에 대한 세부 정보를 다룹니다.