릴리즈 관리 장치(cgroups)
Docker에서는 물리 머신 상의 자원을 여러 컨테이너가 공유하여 작동된다.
이 때 Linux 커널의 기능인 'control groups(cgroups)' 기능을 사용하여 자원의 할당 등을 관리한다.
cgroups는 프로세스와 스레드를 그룹화하여, 그 그룹 안에 존재하는 프로세스와 스레드에 대한 관리를 수행한다.
(예를 들어 호스트 OS의 CPU나 메모리와 같은 자원에 대해 그룹별로 제한을 둘 수 있다. )
cgroups로 관리할 수 있는 주요한 일은 다음과 같다.
cgroups의 주요 서브 시스템
항목 | 설명 |
cpu | cpu 사용량을 제한 |
cpuacct | cpu 사용량 통계 정보를 제공 |
cpuset | cpu나 메모리 배치를 제어 |
memory | 메모리나 스왑 사용량을 제한 |
devices | 디바이스에 대한 액세스 허가/거부 |
freezer | 그룹에 속한 프로세스 정지/재개 |
net_cls | 네트워크 제어 태그를 부가 |
blkio | 블록 디바이스 입출력량을 제어 |
cgroups는 계층 구조를 사용하여 프로세스를 그룹화하여 관리할 수 있다.
예를 들어 사용자 애플리케이션과 서버와 같은 데몬 프로세스를 나눠, 각각의 그룹에 CPU 사용량을 할당할 수 있다.
cgroups의 부모 자식 관계에서는 자식이 부모의 제한을 물려받는다.
따라서 자식은 부모 그룹의 제한을 초과하여 할당할 수 없으므로 중요한 프로세스라도 영향을 받지 않는다.
참고
'About > Docker' 카테고리의 다른 글
[Docker] Docker의 작동 구조 (4) (이미지 데이터 관리) (0) | 2020.12.27 |
---|---|
[Docker] Docker의 작동 구조 (3) (네트워크 구성) (0) | 2020.12.27 |
[Docker] Docker의 작동 구조 (1) (namespace) (2) | 2020.12.13 |
[Docker] Docker 컴포넌트 (1) | 2020.12.13 |
[Docker] Docker의 기능 (1) | 2020.12.07 |