CPU 사용량 모니터링

Last published : Oct 07, 2026
호스트의 pCPU당 최적 vCPU 수는 사용 사례에 따라 다릅니다. 운영 중에는 XenServer® 환경의 성능을 모니터링하고 그에 따라 구성을 조정해야 합니다.

용어

이 영역에는 때때로 서로 바꿔 사용할 수 있는 다양한 용어가 있습니다. 이 문서에서는 다음 용어와 의미를 사용합니다.
  • CPU (물리적 CPU): 프로세서 소켓에 연결된 물리적 하드웨어.
  • 코어: 하나의 독립적인 실행 스레드를 처리할 수 있으며, 해당 실행을 지원하는 데 필요한 모든 기능 단위를 포함하는 물리적 처리 장치.
  • 하이퍼스레드: 하나의 독립적인 실행 스레드를 처리할 수 있으며, 다른 하이퍼스레드(일명 "형제 스레드")와 일부 기능 단위를 공유하는 물리적 처리 장치.
  • 논리적 CPU (pCPU): 레지스터 세트와 명령어 포인터를 포함하는 독립적인 실행 스레드를 처리할 수 있는 단위. 하이퍼스레드가 활성화된 시스템에서는 하이퍼스레드이며, 그렇지 않은 경우에는 코어입니다.
  • 호스트 pCPU: 호스트에 있는 논리적 CPU의 총 개수.
  • vCPU (가상 CPU): 가상화된 논리적 CPU. VM에 제공되는 독립적인 실행 스레드를 처리할 수 있는 논리적 단위입니다. XenServer에서 vCPU는 스케줄러를 사용하여 특정 시점에 어떤 vCPU가 어떤 pCPU에서 실행되는지 결정함으로써 pCPU를 "시간 공유"할 수 있습니다.
  • 게스트 vCPU: VM 내부의 게스트 운영 체제에 제공되는 vCPU.
  • Dom0 vCPU: XenServer 제어 도메인(dom0)에 표시되는 vCPU.
  • 호스트 총 vCPU: 호스트의 dom0 vCPU와 모든 게스트 vCPU의 합계.

일반적인 동작

호스트의 총 vCPU 수는 dom0에서 사용되는 vCPU 수와 호스트의 모든 VM에 할당된 총 vCPU 수를 합한 것입니다. 호스트의 vCPU 수를 늘리면 다음과 같은 유형의 동작이 발생할 수 있습니다.
  • 호스트의 총 vCPU 수가 호스트의 pCPU 수 이하인 경우, 호스트는 VM이 요청하는 만큼의 CPU를 항상 제공합니다.
  • 호스트의 총 vCPU 수가 호스트의 pCPU 수보다 많은 경우, 호스트는 호스트 pCPU 시간을 VM과 공유합니다. 이 동작은 일반적으로 VM에 영향을 미치지 않습니다. VM의 vCPU는 대개 일정 시간 동안 유휴 상태이며, 대부분의 경우 호스트는 100% pCPU 사용량에 도달하지 않기 때문입니다.
  • 호스트의 총 vCPU 수가 호스트의 pCPU 수보다 많고 호스트가 때때로 100% 호스트 pCPU 사용량에 도달하는 경우, VM의 vCPU는 스파이크 동안 요청하는 만큼의 pCPU를 받지 못합니다. 대신, 이러한 스파이크 동안 VM은 호스트에서 사용 가능한 pCPU의 일부를 받기 위해 속도가 느려집니다.
  • 호스트의 총 vCPU 수가 호스트의 pCPU 수보다 많고 호스트가 자주 100% 호스트 pCPU 사용량에 도달하는 경우, VM의 vCPU는 호스트에서 사용 가능한 CPU의 일부를 받기 위해 지속적으로 속도가 느려집니다. VM에 실시간 요구 사항이 있는 경우 이 상황은 이상적이지 않으며, 호스트의 vCPU 수를 줄여 해결할 수 있습니다.
호스트의 최적 vCPU 수는 VM 사용자가 VM 속도를 어떻게 인식하는지에 따라 달라질 수 있으며, 특히 VM에 실시간 요구 사항이 있는 경우 더욱 그렇습니다.

CPU 정보 얻기

호스트의 총 pCPU 수를 확인하려면 다음 명령을 실행하십시오.
xe host-cpu-info --minimal
현재 호스트의 총 vCPU 수(게스트 및 dom0)를 확인하려면 다음 명령을 실행하십시오.
xl vcpu-list | grep -v VCPU | wc -l

RRD 메트릭을 사용한 CPU 사용량 모니터링

XenServer는 VM의 vCPU 성능을 설명하는 RRD 메트릭을 제공합니다.

호스트 pCPU 사용량이 100%일 때

호스트가 100% 호스트 pCPU 사용량에 도달하는 경우, VM을 다른 호스트로 이동할지 여부를 결정하기 위해 다음 VM 메트릭을 사용하십시오.

runstate_concurrency_hazard

  • **runstate_concurrency_hazard > 0%**는 때때로 하나 이상의 vCPU가 실행 중인 동안 다른 하나 이상의 vCPU가 실행되기를 원하지만 pCPU 시간을 얻지 못함을 나타냅니다. vCPU가 조정을 해야 하는 경우, 이 동작은 성능 문제를 야기합니다.
  • runstate_concurrency_hazard가 100%에 가까워지는 상황은 피해야 할 상황입니다.
    권장 조치:
    성능 문제가 있는 경우 다음 조치 중 하나를 수행하십시오.
    • VM의 vCPU 수를 줄입니다.
    • VM을 다른 호스트로 이동합니다.
    • 다른 VM을 마이그레이션하거나 vCPU 수를 줄여 호스트의 총 vCPU 수를 줄입니다.

runstate_partial_contention

  • **runstate_partial_contention > 0%**는 하나 이상의 vCPU가 실행되기를 원하지만 pCPU 시간을 얻을 수 없으며, 동시에 하나 이상의 다른 vCPU가 차단되었음(할 일이 없거나 I/O 완료를 기다리는 중)을 나타냅니다.
  • runstate_concurrency_hazard가 100%에 가까워지는 상황은 피해야 합니다.
    권장 조치:
    스토리지 공급업체에서 제공하는 백엔드 메트릭을 확인하여 백엔드 I/O 스토리지 서버가 과부하되었는지 확인하십시오. 스토리지 서버가 과부하되지 않았고 성능 문제가 있는 경우 다음 조치 중 하나를 수행하십시오.
    • VM의 vCPU 수를 줄입니다.
    • VM을 다른 호스트로 이동합니다.
    • 다른 VM을 마이그레이션하거나 vCPU 수를 줄여 호스트의 총 vCPU 수를 줄입니다.

runstate_full_contention

  • **runstate_full_contention > 0%**는 vCPU가 때때로 동시에 모두 실행되기를 원하지만 아무도 pCPU 시간을 얻을 수 없음을 나타냅니다.
  • **runstate_full_contention approaching 100%**는 피해야 할 상황입니다.
    권장 조치:
    성능 문제가 있는 경우, 다음 조치 중 하나를 취하십시오:
    • VM에서 vCPU 수를 줄입니다.
    • VM을 다른 호스트로 이동합니다.
    • 다른 VM을 마이그레이션하거나 해당 VM의 vCPU 수를 줄여서 호스트의 총 vCPU 수를 줄입니다.

호스트 pCPU 사용량이 100% 미만일 때

호스트가 호스트 pCPU 사용량의 100%에 도달하지 않는 경우, 다음 VM 메트릭을 사용하여 VM에 적절한 수의 vCPU가 있는지 결정하십시오:

runstate_fullrun

  • **runstate_fullrun = 0%**는 vCPU가 동시에 모두 사용되지 않음을 나타냅니다.
    권장 조치:
    이 VM에서 vCPU 수를 줄입니다.
  • **0% < runstate_fullrun < 100%**는 vCPU가 때때로 동시에 모두 사용됨을 나타냅니다.
  • **runstate_fullrun = 100%**는 vCPU가 항상 동시에 모두 사용됨을 나타냅니다.
    권장 조치:
    이 VM의 vCPU 수를 runstate_fullrun < 100%가 될 때까지 늘릴 수 있습니다. vCPU 수를 더 이상 늘리지 마십시오. 그렇지 않으면 호스트가 pCPU 사용량의 100%에 도달할 경우 동시성 위험(concurrency hazard)의 가능성이 높아질 수 있습니다.

runstate_partial_run

  • **runstate_partial_run = 0%**는 모든 vCPU가 항상 사용 중이거나(full-run=100%) vCPU가 전혀 사용되지 않음(idle=100%)을 나타냅니다.
  • **0% < runstate_partial_run < 100%**는 때때로 하나 이상의 vCPU가 할 일이 없거나 I/O 완료를 기다리고 있기 때문에 차단됨을 나타냅니다.
  • **runstate_partial_run=100%**는 항상 하나 이상의 vCPU가 차단되어 있음을 나타냅니다.
    권장 조치:
    백엔드 I/O 스토리지 서버가 과부하 상태인지 확인하십시오. 그렇지 않다면 VM에 vCPU가 너무 많을 수 있으므로 이 VM의 vCPU 수를 줄일 수 있습니다. VM에 vCPU가 너무 많으면 호스트 CPU 사용량이 100%에 도달할 때 VM이 동시성 위험(concurrency hazard) 상태에 빠질 위험이 커질 수 있습니다.