13.8. 가상 머신 성능 모니터링 툴
가장 많은 VM 리소스를 소비하는 항목과 최적화가 필요한 VM 성능 측면을 식별하려면 일반 및 VM별 성능 진단 툴을 모두 사용할 수 있습니다.
기본 OS 성능 모니터링 툴
표준 성능 평가를 위해 호스트 및 게스트 운영 체제에서 기본적으로 제공되는 유틸리티를 사용할 수 있습니다.
RHEL 9 호스트에서 root로
top
유틸리티 또는 시스템 모니터 애플리케이션을 사용하고 출력에서qemu
및virt
을 찾습니다. VM에서 사용하는 호스트 시스템 리소스의 양을 보여줍니다.-
모니터링 도구가
qemu
또는virt
프로세스가 호스트 CPU 또는 메모리 용량의 많은 부분을 소비하는 것을 표시하는 경우,perf
유틸리티를 사용하여 조사합니다. 자세한 내용은 아래를 참조하십시오. -
또한
vhost_net
스레드 프로세스(예: vhost_net -1234)가 과도하게 많은 호스트 CPU 용량을 소비하는 경우다중 대기열 virtio-net
과 같은 가상 네트워크 최적화 기능을 사용하는 것이 좋습니다.
-
모니터링 도구가
게스트 운영 체제에서는 시스템에서 사용 가능한 성능 유틸리티 및 애플리케이션을 사용하여 가장 많은 시스템 리소스를 사용하는 프로세스를 평가합니다.
-
Linux 시스템에서는
top
유틸리티를 사용할 수 있습니다. - Windows 시스템에서는 작업 관리자 애플리케이션을 사용할 수 있습니다.
-
Linux 시스템에서는
perf kvm
perf
유틸리티를 사용하여 RHEL 9 호스트의 성능에 대한 가상화별 통계를 수집하고 분석할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
호스트에서 perf 패키지를 설치합니다.
# dnf install perf
가상화 호스트의 각 통계를 표시하려면
perf kvm stat
명령 중 하나를 사용합니다.-
하이퍼바이저에 대한 실시간 모니터링을 위해서는
perf kvm stat 라이브
명령을 사용하십시오. -
일정 기간 동안 하이퍼바이저의 perf 데이터를 기록하려면
perf kvm stat record
명령을 사용하여 로깅을 활성화합니다. 명령이 취소되거나 중단된 후 데이터는perf kvm stat report
명령을 사용하여 분석할 수 있는perf.data.guest
파일에 저장됩니다.
-
하이퍼바이저에 대한 실시간 모니터링을 위해서는
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 통계
출력의 신호 문제를 신호할 수 있는 기타 이벤트 유형은 다음과 같습니다.-
INSN_EMULATION
- 하위 VM I/O 구성을 제안합니다.
-
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