18.8. Outils de contrôle des performances des machines virtuelles
Pour identifier ce qui consomme le plus de ressources de la VM et quel aspect des performances de la VM doit être optimisé, il est possible d'utiliser des outils de diagnostic des performances, à la fois généraux et spécifiques à la VM.
Outils de contrôle des performances du système d'exploitation par défaut
Pour une évaluation standard des performances, vous pouvez utiliser les utilitaires fournis par défaut par vos systèmes d'exploitation hôte et invité :
Sur votre hôte RHEL 9, en tant que root, utilisez l'utilitaire
top
ou l'application system monitor, et recherchezqemu
etvirt
dans les résultats. Cela indique la quantité de ressources du système hôte que vos machines virtuelles consomment.-
Si l'outil de surveillance indique que l'un des processus
qemu
ouvirt
consomme une grande partie de l'unité centrale ou de la capacité de mémoire de l'hôte, utilisez l'utilitaireperf
pour enquêter. Pour plus de détails, voir ci-dessous. -
En outre, si un processus
vhost_net
, nommé par exemple vhost_net-1234, est affiché comme consommant une quantité excessive de capacité de l'unité centrale de l'hôte, envisagez d'utiliser des fonctions d'optimisation du réseau virtuel, telles quemulti-queue virtio-net
.
-
Si l'outil de surveillance indique que l'un des processus
Sur le système d'exploitation invité, utilisez les utilitaires de performance et les applications disponibles sur le système pour évaluer les processus qui consomment le plus de ressources système.
-
Sur les systèmes Linux, vous pouvez utiliser l'utilitaire
top
. - Sur les systèmes Windows, vous pouvez utiliser l'application Task Manager.
-
Sur les systèmes Linux, vous pouvez utiliser l'utilitaire
perf kvm
Vous pouvez utiliser l'utilitaire perf
pour collecter et analyser des statistiques spécifiques à la virtualisation sur les performances de votre hôte RHEL 9. Pour ce faire, procédez comme suit
Sur l'hôte, installez le paquetage perf:
# dnf install perf
Utilisez l'une des commandes
perf kvm stat
pour afficher les statistiques de perf de votre hôte de virtualisation :-
Pour une surveillance en temps réel de votre hyperviseur, utilisez la commande
perf kvm stat live
. -
Pour enregistrer les données de performance de votre hyperviseur sur une période donnée, activez l'enregistrement à l'aide de la commande
perf kvm stat record
. Après l'annulation ou l'interruption de la commande, les données sont enregistrées dans le fichierperf.data.guest
, qui peut être analysé à l'aide de la commandeperf kvm stat report
.
-
Pour une surveillance en temps réel de votre hyperviseur, utilisez la commande
Analysez la sortie
perf
pour identifier les types d'événementsVM-EXIT
et leur distribution. Par exemple, les événementsPAUSE_INSTRUCTION
devraient être peu fréquents, mais dans la sortie suivante, l'occurrence élevée de cet événement suggère que les CPU de l'hôte ne gèrent pas bien les vCPU en cours d'exécution. Dans un tel scénario, envisagez d'arrêter certaines de vos machines virtuelles actives, de supprimer les vCPU de ces machines virtuelles ou de régler les performances des 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.
D'autres types d'événements peuvent signaler des problèmes dans la sortie de
perf kvm stat
:-
INSN_EMULATION
- suggère une configuration sous-optimale des E/S de la VM.
-
Pour plus d'informations sur l'utilisation de perf
pour surveiller les performances de la virtualisation, voir la page de manuel perf-kvm
.
numastat
Pour connaître la configuration NUMA actuelle de votre système, vous pouvez utiliser l'utilitaire numastat
, qui est fourni en installant le paquetage numactl.
L'exemple suivant montre un hôte avec 4 VM en cours d'exécution, chacune obtenant de la mémoire à partir de plusieurs nœuds NUMA. Cette situation n'est pas optimale pour les performances des vCPU et mérite d'être corrigée:
# 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
En revanche, la figure suivante montre que la mémoire est fournie à chaque machine virtuelle par un seul nœud, ce qui est nettement plus efficace.
# 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