Topic
cgroups v2 (Control Groups Version 2)
JackerLab
2026. 1. 2. 09:21
728x90
반응형

개요
cgroups(Control Groups)는 Linux 커널 기능 중 하나로, 프로세스 그룹 단위로 CPU, 메모리, 블록 I/O, 네트워크 대역폭 등 시스템 자원 사용을 제한, 기록, 격리, 계층화할 수 있게 합니다. 그 중 cgroups v2는 기존 v1의 구조적 한계를 해결하고 더 일관성 있는 인터페이스, 통합된 계층 구조, 향상된 보안성을 제공하는 최신 표준입니다. 컨테이너 환경과 클라우드 네이티브 인프라에서 핵심적인 역할을 수행합니다.
1. 개념 및 정의
| 항목 | 내용 | 비고 |
| 정의 | 리눅스 커널에서 자원 제어를 위한 통합된 계층 구조 기반의 컨트롤 그룹 시스템 | Linux Kernel 4.5 이상 지원 |
| 목적 | 프로세스 그룹 단위 자원 제한, 회계, 격리 기능 제공 | 시스템 안정성과 공정성 확보 |
| 필요성 | cgroups v1의 중복 및 비일관성 문제 해결 | 컨테이너 보안 및 자원 격리 강화 |
2. 특징
| 항목 | 설명 | 비고 |
| 단일 계층 구조 | 모든 컨트롤러가 하나의 트리 내에서 작동 | 복잡한 병합 문제 해소 |
| 통합된 인터페이스 | /sys/fs/cgroup 하위에 통일된 파일 시스템 구조 | 설정과 계측 간 일관성 향상 |
| Thread granularity | 스레드 수준 자원 제어 가능 | cgroup.threaded 플래그 활용 |
| 효율적인 자원 분배 | memory.high, memory.max, cpu.weight 등 정밀한 자원 제어 | 페어 쉐어 방식 포함 |
시스템 수준에서 컨테이너 오케스트레이션 도구와 직접 연결됨.
3. 구성 요소
| 구성 요소 | 설명 | 비고 |
| controllers | cpu, memory, io, pids 등 개별 자원 관리 모듈 | /sys/fs/cgroup/cgroup.controllers로 확인 |
| cgroup.procs | 해당 그룹에 속한 프로세스 PID 목록 | 프로세스 이동 시 업데이트 가능 |
| cgroup.subtree_control | 하위 그룹에 활성화할 컨트롤러 지정 | 트리 기반 계층 제어 |
| unified hierarchy | 단일 트리로 모든 자원 관리 통합 | v1의 병렬 계층 구조와 차별화 |
기존 v1 대비 훨씬 직관적이며 관리가 용이함.
4. 기술 요소
| 기술 요소 | 설명 | 활용 방식 |
| memory.high / memory.max | 메모리 사용 상한선 설정 | 소프트/하드 리밋 분리로 탄력적 제어 |
| cpu.weight | CPU 점유 비율을 비례적으로 설정 | 100 ~ 10000 범위 조절 가능 |
| io.max | 디바이스별 IOPS 또는 BPS 제한 | 디스크 I/O 제어 |
| pids.max | 생성 가능한 PID 수 제한 | DoS 방지 및 격리 목적 |
각 설정은 시스템 서비스, 컨테이너 런타임 등과 통합 활용 가능.
5. 장점 및 이점
| 항목 | 설명 | 기대 효과 |
| 컨테이너 최적화 | Docker, Podman, systemd 등과 연동 | 자원 제한 정책 일관성 확보 |
| 보안성 강화 | PID, 메모리, CPU 제어를 통한 공격면 감소 | 시스템 안정성 향상 |
| 계층 기반 관리 | 하위 그룹 자원 상속 및 제한 가능 | 멀티 테넌시 환경에 적합 |
| 개발 편의성 증가 | 단일 트리 기반으로 예측 가능한 제어 가능 | 사용자 학습 비용 감소 |
리눅스 서버 및 클라우드 인프라 운영에서 핵심 기능으로 자리잡음.
6. 주요 활용 사례 및 고려사항
| 사례 | 설명 | 고려사항 |
| Kubernetes 노드 자원 제어 | kubelet이 cgroups v2를 통해 Pod 단위 자원 제한 | --cgroup-driver=systemd와 함께 사용 |
| systemd 서비스 자원 제어 | 각 서비스 단위로 메모리/CPU 제한 가능 | systemctl set-property로 동적 변경 가능 |
| 컨테이너 런타임 연동 | containerd, CRI-O 등과 호환 | 런타임이 cgroups v2 지원 여부 확인 필요 |
| 데스크탑 앱 리소스 제한 | 게임/브라우저 등의 백그라운드 자원 통제 | 배터리 최적화와 발열 제어 목적 |
모든 컨트롤러가 완전히 작동하려면 커널 및 런타임 호환성 확인 필수.
7. 결론
cgroups v2는 Linux 기반 시스템에서 현대적인 자원 관리와 보안을 실현하는 핵심 기능입니다. 특히 단일 계층 구조와 통합 인터페이스는 관리 효율성과 운영 안정성을 크게 향상시켰으며, 컨테이너 기술과 클라우드 인프라 운영에 필수적으로 통합되고 있습니다. 앞으로는 모든 리눅스 기반 오케스트레이션 환경의 표준 구성요소로 자리매김할 것입니다.
728x90
반응형