본문 바로가기

OS/Linux

cgroups 정리

1. cgroups이란?

cgroups(Control Groups)는 리눅스 커널 기능으로 프로세스를 그룹화하여 CPU, Memory, Disk I/O 등 자원 사용을 제한하고 모니터링할 수 있음. 시스템 성능 최적화 또는 특정 프로세스의 과도한 자원 사용을 방지 가능

 

2. cgroups 주요 기능

- 자원 제한: CPU 시간, Memory 사용량, 네트워크 대역폭 등을 제한하여 각 프로세스가 사용할 수 있는 자원을 제어

- 프로세스 격리: 프로세스를 그룹화하여 서로 간섭하지 않도록 격리

- 자원 사용 모니터링: 각 그룹의 자원 사용량을 추적해 모니터링 가능

- 우선 순위 설정: 특정 프로세스 그룹에 더 많은 자원을 할당해 우선 순위를 조정 가능

 

3. cgroups 설정 및 관리

1. cgroup 생성

sudo mkdir /sys/fs/cgroup/[cgroup명]

 

2. CPU 사용량 제한

echo "50000 100000" | sudo bash -c 'cat > /sys/fs/cgroup/my_cgroup/cpu.max'

 

3. Memory 제한

echo "536870912" | sudo bash -c 'cat > /sys/fs/cgroup/my_cgroup/memory.max'

 

4. 프로세스 추가

echo 1234 | sudo bash -c 'cat > /sys/fs/cgroup/my_cgroup/cgroup.procs'

 

4. cgroups 서브 시스템

4.1 CPU

- 기능: 프로세스의 CPU 사용량 제한 및 관리

- 주요 설정

  - cpu.cfs_period_us: CPU 사용 주기 설정

  - cpu.cfs_quota_us: CPU 사용량 제한 설정

 

4.2 Memory

- 기능: 프로세스 메모리 사용량 제한 및 모니터링

- 주요 설정

  - memory.limit_in_bytes: 메모리 사용량 제한 설정

  - memory.oom_control: OOM 상황에서 동작 설정

 

4.3 blkio

- 기능: 블록 장치 I/O 사용량 관리

- 주요 설정

  - blkio.throttle.read_bps_device: 특정 블록 장치에 대한 읽기 속도 제한 설정

  - blkio.throttle.write_bps_device: 특정 블록 장치에 대한 쓰기 속도 제한 설정

 

4.4 cpuset

- 기능: CPU와 메모리 노드 지정하여 프로세스 실행 제어.

- 주요 설정

  - cpuset.cpus: 프로세스가 실행될 CPU 코어 지정.

  - cpuset.mems: 프로세스가 사용할 메모리 노드 지정.

 

4.5 devices

- 기능: 특정 디바이스 접근 제어

- 주요 설정

  - devices.allow: 특정 디바이스 접근 허옹

  - devices.denyg: 특정 디바이스 접근 차단

 

4.6 pids

- 기능: 프로세스 ID 수 제한

- 주요 설정

  - pids.max: 그룹에 속할 수 있는 최대 프로세스 수 설정

 

4.7 freezer

- 기능: 프로세스 일시 중지 및 재개

- 주요 설정

  - freezer.state: 프로세스 상태 설정

 

'OS > Linux' 카테고리의 다른 글

/proc 파일, 폴더 정리  (0) 2024.10.20