cgroups
개요
- Linux Control Groups
- 프로세스의 시스템 리소스 사용량을 제어하는 기술
- namespace와 더불어 컨테이너 기술의 핵심
namespace는 프로세스를 격리시키는 기술이라면, cgroups는 그러한 프로세스의 사용량을 제어, 제한하는 기술이다.
cgroup 관리 미들웨어 종류
cgroup이란 커널의 모듈을 다루는 미들웨어에는 두 가지가 있다.
두 가지 방법은 조금 다르게 파일을 관리하며 리소스를 관리한다.
결과는 사실 모두 같지만, 방식이 다르기에 호환되지는 않는다.
기본으로 사용되던, cgroup v1에서는 cgroupfs가 기본이었으나, cgroup v2부터는 systemd가 기본값으로 사용되고 있다.
버전
cgroup v1
이전 버전.
초기에 나왔던 순정 모드 그 자체로, 단순하게 리소스를 제한하는 역할을 했다.
cgroup v2
이전 버전과 비교해서 2 버전은 통합된 리소스 관리 api를 제공한다.
조금 더 상세하게 비교하자면 다음과 같이 정리된다.
- 단일 통합 계층 디자인된 API
- 보다 안전한 컨테이너 서브 트리 리소스 할당
- 하위 프로세스가 생기는 것에 대해서도 정확하게 정해진 메모리를 보장해준다는 듯
- Pressure Stall Information과 같은 새로운 기능
- 경합될 여지가 있는 리소스를 식별하고 양을 측정하는 기능이다.
- 다중 리소스에 대해 더욱 뛰어난 고립과 할당 관리
- 네트워크 메모리, 커널 메모리와 같은 다른 유형의 메모리를 통합하여 할당
- 페이지 캐싱과 같은 변경 수요가 즉각적이지 않은 리소스 고려
이렇게 쉽게 현재 컴퓨터에서 사용되고 있는 버전을 확인할 수 있다.
만약 1버전이었다면 나오는 값은 tmpfs
가 되었을 것이다.
내부 값들을 보면 cpu, memory, io등의 다양한 값을 조절하는 것들이 보인다.