Cgroups (Control Group)

Moon Blue의 IT 로그 📝·2023년 3월 21일
0
post-thumbnail

리눅스 Cgroups(Control Groups) 는 리눅스 커널의 기능 중 하나로, 시스템의 프로세스들을 그룹화하여 자원 사용량을 제한하고 관리하는 메커니즘입니다.

✅ 개념

Cgroups는 프로세스 그룹에 대한 CPU, 메모리, 네트워크 대역폭 등의 시스템 자원 사용을 제어하고 제한하는 데 사용됩니다. 이를 통해 서로 다른 애플리케이션 또는 서비스가 동일한 시스템에서 실행될 때 서로간의 자원 경쟁을 줄이고, 시스템 안정성을 향상시킬 수 있습니다.

✅ 특징

  • 자원 할당 제어 : Cgroups 사용하여 각 프로세스 그룹에 자원 할당량을 지정할 수 있습니다. 이를 통해 특정 프로세스 그룹이 과도하게 자원을 사용하는 것을 방지할 수 있습니다.

  • 계층적 구조 : Cgroups는 계층적 구조를 가지고 있어, 상위 Cgroups의 자원 제한이 하위 Cgroups에 상속되며, 필요에 따라 하위 Cgroups에 추가적인 제한을 설정할 수 있습니다.

  • 자원 격리 : Cgroups를 사용하여 프로세스 그룹간의 자원 사용을 격리시킬 수 있습니다. 이를 통해 한 프로세스 그룹이 다른 프로세스 그룹의 자원을 침범하는 것을 방지할 수 있습니다.

  • 모니터링 및 통계 : Cgroups는 각 프로세스 그룹의 자원 사용량을 모니터링하고 통계를 제공합니다. 이를 통해 시스템 운영자는 자원 사용 효율을 관리하고 최적화할 수 있습니다.

📝 사용 사례

  • 컨테이너 기술 : Docker, Kubernetes 등의 컨테이너 기술은 Cgroups를 사용하여 컨테이너 간의 자원 사용량을 제어하고 격리시킵니다. 이를 통해 다수의 컨테이너를 안정적으로 동시에 실행할 수 있습니다.
  • 서버 리소스 관리 : 서버에서 동시에 여러 서비스가 실행되는 경우, Cgroups를 사용하여 각 서비스의 자원 사용량을 제어하고 모니터링할 수 있습니다. 이를 통해 자원 경쟁을 최소화하고, 서비스의 성능과 안정성을 유지할 수 있습니다.

예를 들어, 웹 서버와 데이터베이스 서버가 동일한 시스템에서 실행되는 경우, Cgroups를 사용하여 웹 서버와 데이터베이스 서버에 각각 CPU와 메모리 할당량을 지정할 수 있습니다. 이를 통해 데이터베이스 서버가 웹 서버의 자원을 침범하거나, 웹 서버가 데이터베이스 서버의 자원을 침범하는 것을 방지할 수 있습니다.

profile
What a Beautiful World~ 🌏

0개의 댓글