Cgroups

From HPCWIKI
Jump to navigation Jump to search

cgroups

Template:Status

Template:TOC

Overview

cgroups(Control Groups)는 Linux 커널의 리소스 제한/계산 기능. 컨테이너( Docker, Kubernetes)의 핵심 기술.

Summary

  • * 무엇인가? Linux 커널 리소스 제어. CPU/메모리/디스크/I/O 제한
  • * 왜 필요한가? 컨테이너 리소스 격리. Docker/K8s 기반
  • * 언제 사용하는가? 컨테이너 런타임, 리소스 제한

---

Purpose

이 문서가 존재하는 이유

  • Goal: cgroups의 개념, 사용법, 설정 가이드 제공
  • Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
  • Non-goals: 고급 커스터마이징, 내부 소스 코드 분석

---

Key Concepts

Template:KeyConcepts

---

Architecture

cgroups v2는 단일 계층 구조. 모든 리소스 컨트롤러를 하나의 hierarchy에서 관리. systemd가 cgroups v2 통합. Docker/Kubernetes가 cgroups v2 사용.

---

Workflow

1. 1. cgroup v2 활성화 (Ubuntu 22.04+ 기본)

2. 2. cgroup 디렉토리 생성

3. 3. 리소스 제한 설정 (cpu.max, memory.max)

4. 4. 프로세스 추가

5. 5. 모니터링

---

Configuration

# cgroup v2 상태 확인
cat /sys/fs/cgroup/cgroup.controllers

# cgroup 생성
sudo mkdir /sys/fs/cgroup/mycontainer

# 리소스 제한
echo 50000 > /sys/fs/cgroup/mycontainer/cpu.max  # 50% CPU
echo 1G > /sys/fs/cgroup/mycontainer/memory.max

# 프로세스 추가
echo $$ > /sys/fs/cgroup/mycontainer/cgroup.procs

# 모니터링
cat /sys/fs/cgroup/mycontainer/cpu.stat
cat /sys/fs/cgroup/mycontainer/memory.stat

---

Best Practices

  • cgroup v2 사용 (v1 비권장)
  • systemd unit에서 cgroup 설정
  • Docker/K8s가 cgroup 자동 관리
  • 메모리 제한 시 OOM 설정 확인

---

Limitations

  • cgroup v1은 subsystem 충돌 가능
  • 디버깅 어려움
  • 커널 버전 의존성

---

References

---

Related Pages