토픽 80 / 85·리눅스 커널 기술
Cgroup (Control Group)
Cgroup (Control Group)
Linux 커널에서 프로세스 그룹에 대한 자원(CPU, 메모리, I/O, 네트워크) 사용량을 제한·격리·모니터링하는 기능으로, 컨테이너의 자원 할당과 제한을 담당
목적: 자원 제한, 우선순위 지정, 사용량 모니터링, 컨테이너 자원 관리
특징: 계층 구조, 다양한 컨트롤러, 자원 격리, cgroup v1/v2
주요 컨트롤러(Subsystem)
- •cpu: CPU 시간 비율 제한, CPU 쉐어
- •cpuset: 특정 CPU 코어/메모리 노드 할당
- •memory: 메모리 사용량 제한(RSS, Cache), OOM 제어
- •blkio: 블록 I/O 대역폭 제한, 가중치
- •net_cls: 네트워크 패킷 분류, QoS
- •freezer: 프로세스 그룹 일시 정지
계층 구조: 트리 형태, 부모-자식 상속, /sys/fs/cgroup 디렉토리 기반
cgroup v1 vs v2: v1(여러 계층/복잡), v2(단일 계층/통합/간소화, Linux 4.5+)
동작: ① cgroup 생성 → ② 컨트롤러 설정(limit, share) → ③ 프로세스 추가(cgroup.procs) → ④ 커널이 자원 제한 적용
장점: 세밀한 자원 제어, 모니터링, 공정성, 컨테이너 필수
단점: 설정 복잡도, 오버헤드, 버전 혼재
적용사례: Docker, Kubernetes, systemd, LXC, 컨테이너 자원 할당
비교: Cgroup(자원 제한) vs Namespace(격리) - 둘 다 컨테이너 핵심
연관: Namespace, 컨테이너, Docker, 자원 관리, systemd