13.8. 가상 머신 성능 모니터링 툴

가장 많은 VM 리소스를 소비하는 항목과 최적화가 필요한 VM 성능 측면을 식별하려면 일반 및 VM별 성능 진단 툴을 모두 사용할 수 있습니다.

기본 OS 성능 모니터링 툴

표준 성능 평가를 위해 호스트 및 게스트 운영 체제에서 기본적으로 제공되는 유틸리티를 사용할 수 있습니다.

  • RHEL 9 호스트에서 root로 top 유틸리티 또는 시스템 모니터 애플리케이션을 사용하고 출력에서 qemuvirt 을 찾습니다. VM에서 사용하는 호스트 시스템 리소스의 양을 보여줍니다.

    • 모니터링 도구가 qemu 또는 virt 프로세스가 호스트 CPU 또는 메모리 용량의 많은 부분을 소비하는 것을 표시하는 경우, perf 유틸리티를 사용하여 조사합니다. 자세한 내용은 아래를 참조하십시오.
    • 또한 vhost_net 스레드 프로세스(예: vhost_net -1234)가 과도하게 많은 호스트 CPU 용량을 소비하는 경우 다중 대기열 virtio-net 과 같은 가상 네트워크 최적화 기능을 사용하는 것이 좋습니다.
  • 게스트 운영 체제에서는 시스템에서 사용 가능한 성능 유틸리티 및 애플리케이션을 사용하여 가장 많은 시스템 리소스를 사용하는 프로세스를 평가합니다.

    • Linux 시스템에서는 top 유틸리티를 사용할 수 있습니다.
    • Windows 시스템에서는 작업 관리자 애플리케이션을 사용할 수 있습니다.

perf kvm

perf 유틸리티를 사용하여 RHEL 9 호스트의 성능에 대한 가상화별 통계를 수집하고 분석할 수 있습니다. 이렇게 하려면 다음을 수행합니다.

  1. 호스트에서 perf 패키지를 설치합니다.

    # dnf install perf
  2. 가상화 호스트의 각 통계를 표시하려면 perf kvm stat 명령 중 하나를 사용합니다.

    • 하이퍼바이저에 대한 실시간 모니터링을 위해서는 perf kvm stat 라이브 명령을 사용하십시오.
    • 일정 기간 동안 하이퍼바이저의 perf 데이터를 기록하려면 perf kvm stat record 명령을 사용하여 로깅을 활성화합니다. 명령이 취소되거나 중단되면 데이터는 perf.data.guest 파일에 저장되며, perf kvm 통계 보고서 명령을 사용하여 분석할 수 있습니다.
  3. VM-EXIT 이벤트 유형 및 해당 배포에 대한 perf 출력을 분석합니다. 예를 들어 PAUSE_INSTRUCTION 이벤트는 자주 발생하지 않아야 하지만 다음 출력에서는 호스트 CPU가 실행 중인 vCPU를 제대로 처리하지 않는다고 제안합니다. 이러한 시나리오에서는 활성 VM 중 일부를 종료하거나, 이러한 VM에서 vCPU를 제거하거나, vCPU의 성능을 조정하는 것이 좋습니다.

    # perf kvm stat report
    
    Analyze events for all VMs, all VCPUs:
    
    
                 VM-EXIT    Samples  Samples%     Time%    Min Time    Max Time         Avg time
    
      EXTERNAL_INTERRUPT     365634    31.59%    18.04%      0.42us  58780.59us    204.08us ( +-   0.99% )
               MSR_WRITE     293428    25.35%     0.13%      0.59us  17873.02us      1.80us ( +-   4.63% )
        PREEMPTION_TIMER     276162    23.86%     0.23%      0.51us  21396.03us      3.38us ( +-   5.19% )
       PAUSE_INSTRUCTION     189375    16.36%    11.75%      0.72us  29655.25us    256.77us ( +-   0.70% )
                     HLT      20440     1.77%    69.83%      0.62us  79319.41us  14134.56us ( +-   0.79% )
                  VMCALL      12426     1.07%     0.03%      1.02us   5416.25us      8.77us ( +-   7.36% )
           EXCEPTION_NMI         27     0.00%     0.00%      0.69us      1.34us      0.98us ( +-   3.50% )
           EPT_MISCONFIG          5     0.00%     0.00%      5.15us     10.85us      7.88us ( +-  11.67% )
    
    Total Samples:1157497, Total events handled time:413728274.66us.

    perf kvm 통계 출력의 신호 문제를 신호할 수 있는 기타 이벤트 유형은 다음과 같습니다.

perf 를 사용하여 가상화 성능을 모니터링하는 방법에 대한 자세한 내용은 perf-kvm 도움말 페이지를 참조하십시오.

numastat

시스템의 현재 NUMA 구성을 보려면 numactl 패키지를 설치하여 제공하는 numastat 유틸리티를 사용하면 됩니다.

다음은 각각 여러 NUMA 노드에서 메모리를 가져오는 4개의 VM이 있는 호스트를 보여줍니다. 이는 vCPU 성능에 적합하지 않으며 보증 조정:

# numastat -c qemu-kvm

Per-node process memory usage (in MBs)
PID              Node 0 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Total
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
51722 (qemu-kvm)     68     16    357   6936      2      3    147    598  8128
51747 (qemu-kvm)    245     11      5     18   5172   2532      1     92  8076
53736 (qemu-kvm)     62    432   1661    506   4851    136     22    445  8116
53773 (qemu-kvm)   1393      3      1      2     12      0      0   6702  8114
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
Total              1769    463   2024   7462  10037   2672    169   7837 32434

반면 다음은 단일 노드에서 각 VM에 제공되는 메모리를 훨씬 더 효율적으로 보여줍니다.

# numastat -c qemu-kvm

Per-node process memory usage (in MBs)
PID              Node 0 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Total
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
51747 (qemu-kvm)      0      0      7      0   8072      0      1      0  8080
53736 (qemu-kvm)      0      0      7      0      0      0   8113      0  8120
53773 (qemu-kvm)      0      0      7      0      0      0      1   8110  8118
59065 (qemu-kvm)      0      0   8050      0      0      0      0      0  8051
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
Total                 0      0   8072      0   8072      0   8114   8110 32368