리눅스 Cgroups(Control Groups) 는 리눅스 커널의 기능 중 하나로, 시스템의 프로세스들을 그룹화하여 자원 사용량을 제한하고 관리하는 메커니즘입니다.
Cgroups는 프로세스 그룹에 대한 CPU, 메모리, 네트워크 대역폭 등의 시스템 자원 사용을 제어하고 제한하는 데 사용됩니다. 이를 통해 서로 다른 애플리케이션 또는 서비스가 동일한 시스템에서 실행될 때 서로간의 자원 경쟁을 줄이고, 시스템 안정성을 향상시킬 수 있습니다.
자원 할당 제어 : Cgroups 사용하여 각 프로세스 그룹에 자원 할당량을 지정할 수 있습니다. 이를 통해 특정 프로세스 그룹이 과도하게 자원을 사용하는 것을 방지할 수 있습니다.
계층적 구조 : Cgroups는 계층적 구조를 가지고 있어, 상위 Cgroups의 자원 제한이 하위 Cgroups에 상속되며, 필요에 따라 하위 Cgroups에 추가적인 제한을 설정할 수 있습니다.
자원 격리 : Cgroups를 사용하여 프로세스 그룹간의 자원 사용을 격리시킬 수 있습니다. 이를 통해 한 프로세스 그룹이 다른 프로세스 그룹의 자원을 침범하는 것을 방지할 수 있습니다.
모니터링 및 통계 : Cgroups는 각 프로세스 그룹의 자원 사용량을 모니터링하고 통계를 제공합니다. 이를 통해 시스템 운영자는 자원 사용 효율을 관리하고 최적화할 수 있습니다.
예를 들어, 웹 서버와 데이터베이스 서버가 동일한 시스템에서 실행되는 경우, Cgroups를 사용하여 웹 서버와 데이터베이스 서버에 각각 CPU와 메모리 할당량을 지정할 수 있습니다. 이를 통해 데이터베이스 서버가 웹 서버의 자원을 침범하거나, 웹 서버가 데이터베이스 서버의 자원을 침범하는 것을 방지할 수 있습니다.