18.8. 가상 머신 성능 모니터링 툴
가장 많은 VM 리소스를 소비하는 것과 VM 성능의 최적화가 필요한 측면을 확인하기 위해 일반 및 VM 관련 성능 진단 툴을 사용할 수 있습니다.
기본 OS 성능 모니터링 툴
표준 성능 평가를 위해 호스트 및 게스트 운영 체제에서 기본적으로 제공하는 유틸리티를 사용할 수 있습니다.
RHEL 9 호스트에서 root로
상위
유틸리티 또는 시스템 모니터 애플리케이션을 사용하고 출력에서qemu
및virt
을 찾습니다. 이는 VM에서 사용하는 호스트 시스템 리소스의 양을 보여줍니다.-
모니터링 툴에서
qemu
또는virt
프로세스가 호스트 CPU 또는 메모리 용량의 많은 부분을 사용하도록 표시되면perf
유틸리티를 사용하여 조사합니다. 자세한 내용은 아래를 참조하십시오. -
또한, 예를 들어
vhost_net
-1234 에 대해 이름이 지정된 vhost_net 스레드 프로세스가 과도한 양의 호스트 CPU 용량을 사용하는 것으로 표시되면다중 대기열 virtio-net
과 같은 가상 네트워크 최적화 기능을 사용하는 것이 좋습니다.
-
모니터링 툴에서
게스트 운영 체제에서는 시스템에서 사용 가능한 성능 유틸리티와 애플리케이션을 사용하여 가장 많은 시스템 리소스를 사용하는 프로세스를 평가합니다.
-
Linux 시스템에서는
top
유틸리티를 사용할 수 있습니다. - Windows 시스템에서는 작업 관리자 애플리케이션을 사용할 수 있습니다.
-
Linux 시스템에서는
perf kvm
perf
유틸리티를 사용하여 RHEL 9 호스트의 성능에 대한 가상화 관련 통계를 수집하고 분석할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
호스트에서 perf 패키지를 설치합니다.
# dnf install perf
perf kvm stat
명령 중 하나를 사용하여 가상화 호스트에 대한 perf 통계를 표시합니다.-
하이퍼바이저를 실시간 모니터링하려면
perf kvm stat live
명령을 사용합니다. -
일정 기간 동안 하이퍼바이저의 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 kvmstat
의 출력에서 문제를 신호할 수 있는 기타 이벤트 유형은 다음과 같습니다.-
INSN_EMULATION
- 하위 VM I/O 구성 을 제안합니다.
-
perf
를 사용하여 가상화 성능을 모니터링하는 방법에 대한 자세한 내용은 시스템의 perf-kvm
도움말 페이지를 참조하십시오.
numastat
시스템의 현재 NUMA 구성을 보려면 numactl 패키지를 설치하여 제공하는 numastat
유틸리티를 사용할 수 있습니다.
다음은 4개의 실행 중인 VM이 있는 호스트를 나타내며 각각 여러 NUMA 노드에서 메모리를 가져옵니다. 이는 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