cgroup 이란?
- 제어 그룹 (control group) 의 줄임말이다.
- 프로세스의 리소스 사용량 (CPU, 메모리, 디스크 I/O, 네트워크) 등을 제한하고 격리하는 Linux 커널 기능이다.
- Docker 와 같이 컨테이너화된 환경에서 필요한 격리 및 리소스 제어를 제공하는데 필수적이다.
핵심 개념
리소스 제한
- 프로세스의 사용자 정의 그룹 간에 CPU 시간, 시스템 메모리, 네트워크 대역폭과 같은 리소스를 할당할 수 있다.
우선순위 지정
- 서로 다른 리소스 그룹의 우선순위를 정의할 수 있다.
- 부하가 높을 때 어떤 애플리케이션이 더 많이 리소스를 확보할지 설정이 가능하다.
감사 (Audit)
- 여러 작업 그룹에서 사용하는 리소스에 대한 자세한 계정을 제공한다.
- 모니터링 및 감사 목적에 중요하다.
제어
- 제어 프로세스 그룹을 고정하고 다시 시작하고 할당된 리소스를 동적으로 변경할 수 있다.
작동 방식
계층 구조와 그룹
- cgroup 시스템은 계층적으로 구성된다. 그룹은 각각 다른 리소스 제한을 가진 서브 그룹을 갖는다. 각 그룹은 프로세스의 집합이며 각 프로세스는 하나의 cgroup 의 멤버만 가능하다. (여러 cgroup 의 멤버가 될 수 없다.)
컨트롤러
- CPU, 메모리, blkio(Block I/O) 등의 하위 시스템 혹은 컨트롤러를 사용한다.
- 각 컨트롤러는 한가지 유형의 시스템 리소스를 관리할 수 있다.
- 메모리 컨트롤러는 메모리 사용량을 제한하고, CPU 컨트롤러는 CPU 사용량을 제한하는 등의 역할을 한다.
cgroupfs
- cgroup 은 groupfs 라는 의사 파일 시스템을 통해 사용자 공간에 노출된다.
- 사용자는 cgroupfs 의 파일을 읽거나 쓰면서 cgroup 과 상호작용한다.
Docker 및 컨테이너에서 사용되는 방식
- 각 컨테이너는 격리된 cgroup 에서 실행된다.
- 컨테이너는 할당된 리소스에만 접근이 가능하다.
- 한 컨테이너가 리소스를 고갈시켜도 다른 컨테이너에 영향을 미치지 않는다.
- 시스템 관리자는 리소스 할당 및 우선순위를 세부적으로 제한 가능하다.
반응형
'리눅스와 유닉스' 카테고리의 다른 글
.bashrc 파일이란? (0) | 2024.02.04 |
---|---|
Bash, 그리고 Shell 이란 무엇일까? (0) | 2024.02.03 |
apt-get remove 명령어와 apt-get purge 명령어의 차이 (0) | 2023.06.22 |
Windows WSL 에서 C 언어 코딩 환경 세팅하기 (0) | 2023.06.08 |
WSL 에서 apt-get install 을 이용한 패키지 설치가 동작하지 않을 때 (0) | 2023.06.07 |