Learning
토픽 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