CGroups Linux

agnusdei·2023년 10월 29일

Cgroup은 Control Group의 약자로, 리눅스 운영 체제에서 프로세스 그룹을 관리하기 위한 기능입니다. Cgroup은 프로세스에 대한 리소스 할당 및 제한을 설정하고 모니터링하는 데 사용됩니다. 이를 통해 시스템 관리자는 프로세스 그룹 간의 리소스 사용량을 제어하고 성능 조정을 수행할 수 있습니다.

Cgroup은 다양한 서브시스템(subsystem)으로 구성되어 있으며, 각 서브시스템은 특정 유형의 리소스(예: CPU, 메모리, 디스크 I/O 등)를 제어합니다. Cgroup을 사용하여 여러 가지 작업을 수행할 수 있습니다. 몇 가지 일반적인 사용 사례와 함께 코드 예시를 살펴보겠습니다.

  1. CPU 제한 설정
    다음 예제는 Cgroup을 사용하여 CPU 점유율 제한을 설정하는 방법입니다.
# Cgroup 계층 구조 생성
sudo mkdir /sys/fs/cgroup/cpu_limit

# CPU 서브시스템에 cgroup 등록
echo 1000 | sudo tee /sys/fs/cgroup/cpu_limit/cpu.cfs_quota_us

# 실행 중인 프로세스를 cgroup에 추가
echo <PID> | sudo tee /sys/fs/cgroup/cpu_limit/tasks

위 예제에서 cpu.cfs_quota_us 파일은 CPU 사용 시간의 제한을 마이크로초 단위로 설정합니다. 이 예에서는 1000 마이크로초(1밀리초)로 제한을 설정하였습니다. <PID>에는 제한을 적용할 프로세스의 식별자를 입력해야 합니다.

  1. 메모리 할당 제한
    다음 예제는 Cgroup을 사용하여 프로세스에 대한 메모리 할당 제한을 설정하는 방법입니다.
# Cgroup 계층 구조 생성
sudo mkdir /sys/fs/cgroup/memory_limit

# 메모리 서브시스템에 cgroup 등록
echo 100M | sudo tee /sys/fs/cgroup/memory_limit/memory.limit_in_bytes

# 실행 중인 프로세스를 cgroup에 추가
echo <PID> | sudo tee /sys/fs/cgroup/memory_limit/tasks

위 예제에서 memory.limit_in_bytes 파일은 메모리 할당 제한을 바이트 단위로 설정합니다. 이 예에서는 100MB의 제한을 설정하였습니다.

  1. 블록 I/O 우선 순위 지정
    다음 예제는 Cgroup을 사용하여 프로세스 그룹의 블록 I/O 우선 순위를 지정하는 방법입니다.
# Cgroup 계층 구조 생성
sudo mkdir /sys/fs/cgroup/io_priority

# 블록 I/O 서브시스템에 cgroup 등록 및 우선 순위 설정
echo 7 | sudo tee /sys/fs/cgroup/io_priority/blkio.weight

# 실행 중인 프로세스를 cgroup에 추가
echo <PID> | sudo tee /sys/fs/cgroup/io_priority/tasks

위 예제에서 blkio.weight 파일은 블록 I/O 우선 순위를 설정합니다. 값이 클수록 우선순위가 높아집니다.

Cgroup은 리눅스 시스템 관리자에게 유용한 기능을 제공하는 강력한 도구입니다. 위의 예시는 Cgroup의 일부 사용 사례를 보여주지만, 다양한 다른 서브시스템과 속성을 사용하여 더 많은 작업을 수행할 수 있습니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글