Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.5. 컨트롤 그룹

Red Hat Enterprise Linux는 성능 튜닝을 위해 여러 유용한 옵션을 제공합니다. 수 백개의 프로세서까지 확장하는 대형 시스템을 튜닝하여 뛰어난 성능을 제공할 수 있습니다. 하지만 이러한 시스템의 튜닝에는 상당한 전문 지식과 명확하게 정의된 워크로드가 필요합니다. 비용이 비싸고 소수인 대형 시스템의 경우 이를 특별히 다루어도 상관없었습니다. 현재 이러한 시스템은 메인 스트림이 되어 보다 효과적인 도구가 필요합니다.
복잡성에 더하여 서비스 통합을 위해 현재 보다 강력한 시스템이 사용되고 있습니다. 이전의 4에서 8 대의 서버에서 실행되고 있던 작업은 현재 하나의 서버로 대체되었습니다. 1.2.1절. “병렬 컴퓨팅 ”에서 설명했듯이 여러 중급 시스템에는 현재 예전의 고성능 시스템보다 더 많은 코어가 들어 있습니다.
현재 많은 애플리케이션은 병렬 처리 용으로 설계되어 성능 향상을 위해 여러 스레드 또는 프로세스를 사용합니다. 하지만 일부 애플리케이션은 8 개 이상의 스레드를 보다 효과적으로 사용할 수 있습니다. 따라서 일반적으로 여러 애플리케이션은 기능을 극대화하기 위해 32-CPU 시스템에 설치해야 합니다.
다음과 같은 상황을 생각해 봅니다: 소형의 저렴한 메인 스트림 시스템이 현재 이전의 비싼 고성능 시스템의 성능을 갖는 패리티입니다. 저렴한 고성능 시스템은 시스템 설계자에게 더 적은 수의 시스템에 더 많은 서비스를 통합할 수 있는 기능을 부여합니다.
하지만 일부 리소스 (I/O 및 네트워크 통신 등)는 공유되고 CPU 수 만큼 빠르게 확장하지 않습니다. 따라서 여러 애플리케이션을 포함하는 시스템은 하나의 애플리케이션이 단일 리소스를 독점하면 전체 성능이 저하될 수 있습니다.
이 문제를 해결하기 위해 현재 Red Hat Enterprise Linux 6는 cgroups (control groups)를 지원합니다. Cgroups를 통해 관리자는 필요에 따라 리소스를 특정 작업에 할당할 수 있습니다. 예를 들어 4 개의 CPU 중 80%, 60GB 메모리, 디스크 I/O의 40%를 데이터베이스 애플리메이션에 할당할 수 있습니다. 동일한 시스템에서 실행 중인 웹 애플리케이션에는 두 개의 CPU, 2GB 메모리, 사용 가능한 네트워크 대역폭의 50%를 할당할 수 있습니다.
결과적으로 데이터베이스와 웹 애플리케이션 모두는 시스템 리소스를 과도하게 사용하지 않고 우수한 성능을 제공할 수 있습니다. 또한 cgroups의 여러 측면인 자체 튜닝 (self-tuning)으로 인해 시스템은 워크로드 변경에 따라 대응할 수 있습니다.
cgroup에는 다음과 같은 두 가지 주요 구성 요소가 있습니다:
  • cgroup에 할당된 작업 목록
  • 이러한 작업에 할당된 리소스
cgroup에 할당된 작업은 cgroup 내에서 실행됩니다. 해당 작업의 자식 작업도 cgroup 내에서 실행됩니다. 이를 통해 관리자는 전체 애플리케이션을 단일 단위로 관리할 수 있습니다. 또한 관리자는 다음과 같은 리소스의 할당을 설정할 수 있습니다:
  • CPUsets
  • 메모리
  • I/O
  • 네트워크 (대역폭)
CPUsets 내에서 cgroups를 통해 관리자는 CPU 수, 특정 CPU 또는 노드의 친화도 [3] 및 작업 세트에서 사용하는 CPU 시간을 설정할 수 있습니다. CPUsets를 설정하기 위해 cgroups를 사용하는 것은 전반적인 성능 향상을 보장하고 애플리케이션이 CPU 시간 동안 작동되지 않는지를 확인하는 동시에 다른 작업의 비용에서 애플리케이션이 리소스를 과도하게 사용하지 않도록 하기 위해 필수적입니다.
I/O 대역폭과 네트워크 대역폭은 다른 리소스 컨트롤러에 의해 관리됩니다. 리소스 컨트롤러를 통해 cgroup의 작업이 소비하는 대역폭 양을 결정할 수 있으며 cgroup의 작업이 리소스를 과잉 소비하거나 리소스 부족이 되지 않게 할 수 있습니다.
Cgroups를 통해 관리자는 높은 수준에서 다양한 애플리케이션을 필요로 하고 소비하는 시스템 리소스를 정의 및 분배할 수 있습니다. 그 후 시스템은 자동으로 이러한 다양한 애플리케이션을 관리하고 균형을 유지하며 예측 가능한 우수한 성능을 제공하고 전체 시스템 성능을 최적화합니다.
컨트롤 그룹 사용 방법에 대한 보다 자세한 내용은 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/리소스 관리 가이드에서 참조하십시오.


[3] 일반적으로 노드는 소켓 내에 있는 CPU 또는 코어 세트로 정의됩니다.