cgroups를 사용하여 AL2023에서 프로세스 리소스 사용 제한 - Amazon Linux 2023

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

cgroups를 사용하여 AL2023에서 프로세스 리소스 사용 제한

systemd를 사용한 리소스 제어 섹션을 사용하는 것이 좋지만, 이 섹션에서는 프로세스의 CPU 및 메모리 사용량을 제한하기 위한 기본 libcgroup-tools 유틸리티의 기본 사용량을 다룹니다. 두 방법 모두 이전에 EPEL에서 제공되었던, cpulimit 유틸리티를 사용하는 대체 방법입니다.

아래 예제에서는 libcgroup-tools 패키지의 유틸리티와 sysfs의 튜닝 가능 항목을 사용하여 CPU 및 메모리 사용량을 제한하면서 stress-ng 스트레스 테스트(stress-ng 패키지)를 실행하는 방법을 다룹니다.

명령줄에서 libcgroup-tools를 사용하여 리소스 사용 제한
  1. libcgroup-tools 패키지를 설치합니다.

    [ec2-user ~]$ sudo dnf install libcgroup-tools
  2. memorycpu 컨트롤러를 사용하여 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 디렉터리가 있습니다.

  3. 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
  4. 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 사용량을 제한하는 방법을 포함하여 일부 튜닝 가능 항목이 다릅니다.

  5. 아래 예제는 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
  6. cgroup을 제거하여 정리

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

cgroup-v2용 Linux 커널 설명서에는 작동 방식에 대한 광범위한 세부 정보가 포함되어 있습니다. cpu메모리 컨트롤러 설명서에서는 각 튜닝 가능 옵션을 사용하는 방법에 대한 세부 정보를 다룹니다.