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