[Linux] cgroup ?

2023. 11. 7. 20:11DevOps/Linux

cgroup은 "control group"의 약어로, 리눅스 커널의 기능

이 기능을 통해 시스템 관리자는 프로세스 그룹에 대한 시스템 자원의 할당을 관리하고 제한할 수 있다.

cgroup을 사용하면 CPU, 메모리, 네트워크 대역폭, 디스크 I/O 등 다양한 시스템 자원을 세밀하게 제어할 수 있다.

특정 프로세스 그룹이 너무 많은 자원을 사용하여 시스템 전체의 안정성을 해치는 것을 방지할 수 있다.


  1. 자원 제한(Resource Limiting): 특정 cgroup에 할당된 프로세스가 사용할 수 있는 최대 자원을 제한할 수 있습니다. 예를 들어, 메모리의 최대 사용량을 제한하여 시스템의 나머지 부분이 안정적으로 작동하도록 보장할 수 있습니다.
  2. 우선순위 지정(Prioritization): 서로 다른 cgroup에 속한 프로세스에 CPU 시간의 우선순위를 부여하여 중요한 작업이 더 많은 CPU 시간을 얻도록 할 수 있습니다.
  3. 회계 및 모니터링(Accounting and Monitoring): 시스템 관리자가 cgroup에 속한 프로세스가 사용하는 자원의 양을 추적할 수 있도록 합니다. 이 정보는 시스템의 성능을 모니터링하고 필요한 조정을 하는 데 유용합니다.
  4. 프로세스 제어(Control over Processes): 프로세스의 시작과 종료를 관리하고, 시스템의 다른 부분에 영향을 주지 않으면서 특정 프로세스를 재시작하거나 종료할 수 있습니다.

 

도커 컨테이너의 경우처럼

호스트 머신의 커널을 이용하면서 네임스페이스 분리와 cgroup을 이용한 제어를 통해

독립적인 OS와 같은 환경을 만들 수 있다.