CPU 사용량 모니터링
호스트의 pCPU당 최적의 vCPU 수는 사용 사례에 따라 다릅니다. 작동 중에는 Citrix Hypervisor 환경의 성능을 모니터링하고 그에 따라 구성을 조정해야 합니다.
약관
이 영역에는 때때로 같은 의미로 사용되는 다양한 용어가 있습니다. 이 기사에서는 다음과 같은 용어와 의미를 사용합니다.
- CPU (물리적 CPU): 프로세서 소켓에 연결된 물리적 하드웨어입니다.
- 코어: 하나의 독립적인 실행 스레드가 가능한 물리적 처리 장치로서, 해당 실행을 지원하는 데 필요한 모든 기능 단위를 포함합니다.
- 하이퍼스레드: 하나의 독립적인 스레드를 실행할 수 있는 물리적 처리 장치로, 일부 기능 단위를 다른 하이퍼스레드 (“형제 스레드”라고도 함) 와 공유합니다.
- 논리적 CPU (pCpu): 레지스터 세트와 명령 포인터를 포함하는 독립적인 실행 스레드가 가능한 장치입니다. 하이퍼스레드가 활성화된 시스템에서 이것은 하이퍼스레드입니다. 다른 경우에는 핵심입니다.
- 호스트 PCPU: 호스트에 있는 논리적 CPU의 총 수입니다.
- vCPU (가상 CPU): 가상화된 논리적 CPU입니다. VM에 제공되는 독립적인 실행 스레드가 가능한 논리적 단위입니다. Citrix Hypervisor에서 vCPU는 스케줄러를 사용하여 특정 시점에 어떤 vCPU가 어떤 pCPU에서 실행되고 있는지 확인하여 PCPU를 “시간 공유”할 수 있습니다.
- 게스트 vCPU: VM 내부의 게스트 운영 체제에 제공되는 vCPU입니다.
- Dom0 vCPU: Citrix Hypervisor 제어 도메인 (dom0) 에 표시되는 vCPU입니다.
- 호스트 총 vCPU: dom0 vCPU와호스트에 있는 모든 게스트 vCPU의 합계입니다.
일반 행동
호스트의 총 vCPU 수는 dom0에서 사용한 vCPU 수를 호스트의 모든 VM에 할당된 총 vCPU 수에 더한 값입니다. 호스트의 vCPU 수를 늘리면 다음과 같은 유형의 동작이 발생할 수 있습니다.
-
호스트의 총 vCPU 수가 호스트의 PCPU 수보다 작거나 같으면 호스트는 항상 VM에서 요청한 만큼의 CPU를 제공합니다.
-
호스트의 총 vCPU 수가 호스트의 PCPU 수보다 많으면 호스트는 호스트 PCU의 시간을 VM과 공유합니다. vCPU는 보통 일정 시간 동안 유휴 상태이고 대부분의 경우 호스트의 pCPU 사용량이 100% 에 도달하지 않기 때문에 이 동작은 VM에 일반적으로 영향을 미치지 않습니다.
-
호스트의 총 vCPU 수가 호스트의 PCPU 수보다 많고 호스트가 때때로 호스트 pCPU 사용량이 100% 에 도달하는 경우, VM의 vCPU는 스파이크 기간 동안 요청한 만큼의 pCPU를 받지 못합니다. 대신 이러한 스파이크 중에는 VM이 속도를 늦추어 호스트에서 사용 가능한 pCPU의 일부를 수신합니다.
-
호스트의 총 vCPU 수가 호스트의 PCPU 수보다 많고 호스트가 종종 호스트 pCPU 사용량이 100% 에 도달하는 경우, VM의 vCPU 속도가 지속적으로 느려져 호스트에서 사용 가능한 CPU의 몫을 받습니다. VM에 실시간 요구 사항이 있는 경우 이 상황은 이상적이지 않으므로 호스트의 vCPU 수를 줄이면 문제를 해결할 수 있습니다.
호스트에 있는 최적의 vCPU 수는 특히 VM에 실시간 요구 사항이 있는 경우 VM 속도에 대한 VM 사용자의 인식에 따라 달라질 수 있습니다.
CPU에 대한 정보 가져오기
호스트의 총 PCPU 수를 확인하려면 다음 명령을 실행합니다.
xe host-cpu-info --minimal
현재 호스트에 있는 총 vCPU 수 (guest 및 dom0) 를 찾으려면 다음 명령을 실행합니다.
xl vcpu-list | grep -v VCPU | wc -l
RRD 메트릭으로 CPU 사용량 모니터링
Citrix Hypervisor는 VM의 vCPU가 어떻게 작동하는지 설명하는 RRD 메트릭을 제공합니다.
호스트 PCPU 사용량이 100% 인 경우
호스트가 호스트 pCpu 사용량의 100% 에 도달하면 다음 VM 메트릭을 사용하여 VM을 다른 호스트로 이동할지 여부를 결정하십시오.
런스테이트_동시성_해저드
-
runstate_concurrency_hazard > 0% 는 때때로 하나 이상의 vCPU가 실행되고 있는 동안 적어도 하나의 다른 vCPU가 실행되기를 원하지만 pCPU 시간을 확인할 수 없다는 것을 나타냅니다. vCPU가 조정해야 하는 경우 이 동작으로 인해 성능 문제가 발생합니다.
-
runstate_concurrency_hazard가 100% 에 가까워지는 것은 피해야 할 상황입니다.
권장 조치:
성능 문제가 있는 경우 다음 조치 중 하나를 취하십시오.
- VM의 vCPU 수를 줄입니다.
- VM을 다른 호스트로 이동합니다.
- 다른 VM을 마이그레이션하거나 해당 vCPU 수를 줄여 호스트의 총 vCPU 수를 줄입니다.
실행 상태_부분_경합
-
runstate_partial_contention > 0% 는 하나 이상의 vCPU가 실행되기를 원하지만 pCPU 시간을 확인할 수 없다는 것과 또한 다른 하나 이상의 vCPU가 차단되었음을 나타냅니다 (할 일이 없거나 I/O가 완료되기를 기다리고 있기 때문).
-
runstate_concurrency_hazard가 100% 에 가까워지는 것은 피해야 할 상황입니다.
권장 조치:
스토리지 공급업체에서 제공하는 백엔드 지표를 검토하여 백엔드 I/O 스토리지 서버의 과부하 여부를 확인하십시오. 스토리지 서버에 과부하가 걸리지 않고 성능 문제가 있는 경우 다음 조치 중 하나를 수행하십시오.
- VM의 vCPU 수를 줄입니다.
- VM을 다른 호스트로 이동합니다.
- 다른 VM을 마이그레이션하거나 해당 vCPU 수를 줄여 호스트의 총 vCPU 수를 줄입니다.
런스테이트_풀_컨텐션
-
runstate_full_contention > 0% 는 vCPU가 동시에 모두 실행되기를 원하지만 어떤 vCPU도 pCPU 시간을 얻을 수 없다는 것을 나타냅니다.
-
runstate_full_contention이 100% 에 가까워지는 것은 피해야 할 상황입니다.
권장 조치:
성능 문제가 있는 경우 다음 조치 중 하나를 취하십시오.
- VM의 vCPU 수를 줄입니다.
- VM을 다른 호스트로 이동합니다.
- 다른 VM을 마이그레이션하거나 해당 vCPU 수를 줄여 호스트의 총 vCPU 수를 줄입니다.
호스트 PCPU 사용량이 100% 미만인 경우
호스트가 호스트 pCPU 사용량의 100% 에 도달하지 못하는 경우 다음 VM 메트릭을 사용하여 VM의 vCPU 수가 적절한지 여부를 결정하십시오.
런스테이트_풀런
-
runstate_fullrun = 0% 는 vCPU가 동시에 사용되는 경우가 전혀 없음을 나타냅니다.
권장 조치:
이 VM의 vCPU 수를 줄이십시오.
-
0% < runstate_fullrun < 100% 는 vCPU가 동시에 모두 사용되는 경우가 있음을 나타냅니다.
-
runstate_fullrun = 100% 는 vCPU가 항상 동시에 모두 사용되고 있음을 나타냅니다.
권장 조치:
runstate_fullrun이 100% 미만일 때까지 이 VM의 vCPU 수를 늘릴 수 있습니다. vCPU 수를 더 이상 늘리지 마십시오. 그렇지 않으면 호스트가 pCPU 사용량이 100% 에 도달할 경우 동시성 위험이 증가할 수 있습니다.
실행 상태_부분_실행
-
runstate_partial_run = 0% 는 모든 vCPU가 항상 사용 중이거나 (전체 실행= 100%) vCPU가 전혀 사용되지 않고 있음을 나타냅니다 (유휴 상태= 100%).
-
0% < runstate_partial_run < 100% 는 vCPU가 할 일이 없거나 I/O가 완료되기를 기다리고 있기 때문에 하나 이상의 vCPU가 차단되는 경우가 있음을 나타냅니다.
-
runstate_partial_run= 100% 는 항상 하나 이상의 vCPU가 차단되어 있음을 나타냅니다.
권장 조치:
백엔드 I/O 스토리지 서버의 과부하 여부를 확인합니다. 그렇지 않은 경우 VM에 vCPU가 너무 많을 수 있으므로 이 VM의 vCPU 수를 줄일 수 있습니다. VM에 vCPU가 너무 많으면 호스트 CPU 사용량이 100% 에 도달할 때 VM이 동시성 위험 상태가 될 위험이 커질 수 있습니다.