Red Hat Training
A Red Hat training course is available for RHEL 8
11.7. Ferramentas de monitoramento de desempenho de máquinas virtuais
Para identificar o que consome mais recursos de VM e qual aspecto do desempenho da VM necessita de otimização, podem ser utilizadas ferramentas de diagnóstico de desempenho, tanto gerais quanto específicas de VM.
Ferramentas de monitoramento de desempenho padrão do SO
Para avaliação de desempenho padrão, você pode usar as utilidades fornecidas por padrão por seus sistemas operacionais host e guest:
Em seu host RHEL 8, como root, use o utilitário
top
ou o aplicativo system monitor, e procureqemu
evirt
na saída. Isto mostra a quantidade de recursos do sistema host que seus VMs estão consumindo.-
Se a ferramenta de monitoramento mostrar que qualquer um dos processos
qemu
ouvirt
consome uma grande parte da CPU ou da capacidade de memória do host, use o utilitárioperf
para investigar. Para obter detalhes, veja abaixo. -
Além disso, se um processo de thread
vhost_net
, chamado por exemplo vhost_net-1234, for exibido como consumindo uma quantidade excessiva de capacidade de CPU do host, considere o uso de recursos de otimização de rede virtual, tais comomulti-queue virtio-net
.
-
Se a ferramenta de monitoramento mostrar que qualquer um dos processos
No sistema operacional convidado, use utilitários e aplicações de desempenho disponíveis no sistema para avaliar quais processos consomem mais recursos do sistema.
-
Em sistemas Linux, você pode usar o utilitário
top
. - Em sistemas Windows, você pode usar o aplicativo Task Manager.
-
Em sistemas Linux, você pode usar o utilitário
perf kvm
Você pode usar o utilitário perf
para coletar e analisar estatísticas específicas de virtualização sobre o desempenho de seu host RHEL 8. Para fazer isso:
No host, instale o pacote perf:
# yum install perf
Use o comando
perf kvm stat
para exibir as estatísticas do seu host de virtualização:-
Para o monitoramento em tempo real de seu hipervisor, use o comando
perf kvm stat live
. -
Para registrar os dados do seu hipervisor durante um período de tempo, ative o registro usando o comando
perf kvm stat record
. Após o comando ser cancelado ou interrompido, os dados são salvos no arquivoperf.data.guest
, que pode ser analisado usando o comandoperf kvm stat report
.
-
Para o monitoramento em tempo real de seu hipervisor, use o comando
Analisar a saída de
perf
para os tipos de eventosVM-EXIT
e sua distribuição. Por exemplo, os eventosPAUSE_INSTRUCTION
devem ser pouco freqüentes, mas na saída seguinte, a alta ocorrência deste evento sugere que as CPUs anfitriãs não estão lidando bem com as vCPUs em funcionamento. Em tal cenário, considere desligar algumas de suas VMs ativas, remover as vCPUs dessas VMs, ou ajustar o desempenho das vCPUs.# 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.
Outros tipos de eventos que podem sinalizar problemas na saída do
perf kvm stat
incluem:-
INSN_EMULATION
- sugere uma configuração de E/S da VM subótima.
-
Para mais informações sobre o uso de perf
para monitorar o desempenho da virtualização, consulte a página de manual perf-kvm
.
numastat
Para ver a configuração atual de seu sistema NUMA, você pode usar o utilitário numastat
, que é fornecido através da instalação do pacote numactl.
O seguinte mostra um host com 4 VMs rodando, cada um obtendo memória de múltiplos nós NUMA. Isto não é ideal para o desempenho do vCPU, e garante o ajuste:
# 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
Em contraste, o que se segue mostra a memória sendo fornecida a cada VM por um único nó, o que é significativamente mais eficiente.
# 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