A quel point KVM est-il performant ?
Traduction d'un post sur les performances d'une machine virtuelle KVM face à du bare metal.
Traduction d'un post trés détaillé sur la différence de performance entre une machine virtuelle et du bare metal.
Bonne lecture!!!!
Après avoir parcouru le guide sur le PCI passthrough,
Il y a une question qui a été soulevée assez souvent : quelle est la différence de performance entre l'exécution de jeux dans une VM et leur exécution native sur l'hôte ?
Cette question a une portée beaucoup plus large : dans quelle mesure KVM peut-il réellement faire fonctionner un système d'exploitation invité ? Quelle est la différence de performance entre l'hôte et une machine virtuelle ?
J'ai lancé une série de jeux et de benchmarks pour pouvoir représenter avec précision une grande variété de mesures de performance. Le système utilisé pour les tests est mon propre PC :
- Intel i7 4790k overclocké à 4,2 GHz
- 32 Go de RAM G.Skill DDR3 fonctionnant sur un profil XMP pour une vitesse totale de 2133 MHz
- EVGA GTX 980 Superclocked
- Carte mère Gigabyte Z97MX Gaming 5
- SSD Samsung 850 Pro M.2 SATA de 256 Go connecté directement au slot M.2 de la carte mère.
J'ai utilisé Windows 8.1 Pro en tant qu'installation propre avec les applications métropolitaines préinstallées supprimées et sans connexion Internet, c'était la même configuration pour la machine virtuelle.
L'hôte de la machine virtuelle était le même PC exécutant Debian Stretch :
- Noyau 4.8
- OVMF pour le support UEFI
- Chipset i440FX
- 10 Go de RAM
- 4 cœurs et 2 threads pour un total de 8 threads (pour refléter le CPU de l'hôte)
- Le format du disque est qcow2 et utilise la mise en cache par écriture.
- Le fichier disque lui-même est exécuté sur le même SSD M.2.
- GTX 980 transmise à la VM
- Émulation avec KVM et toutes les technologies de virtualisation Intel activées.
Tous les benchmarks et les jeux ont été exécutés avec des paramètres identiques.
Voici la feuille de calcul Google Docs avec toutes mes données et graphiques.
Commençons par les performances du CPU.
Les performances du CPU sont étonnamment presque les mêmes entre l'hôte et la VM. Dans Geekbench, l'hôte a obtenu un score de 4,987 sur un seul cœur et la VM a obtenu un score de 4,718, pas mal. Dans les tests mono et multi-cœurs, les performances de la VM étaient inférieures de 4,5% à celles de l'hôte.
Cinebench a donné relativement le même résultat, l'hôte a obtenu un score de 817, et la VM un score de 775. Il en résulte une différence de performance de 5,14 %. Quand on y pense, c'est insensé. L'émulation d'un système d'exploitation dans KVM avec l'accélération de la virtualisation d'Intel peut atteindre 96 % de la performance du CPU de l'hôte. Voilà pourquoi les entreprises exécutent tout dans des machines virtuelles.
Passons maintenant aux performances du disque.
Le format qcow2 est généralement considéré comme le meilleur format de stockage alliant performances et compression. J'ai utilisé Crystal Disk Mark avec une taille de test de 2 Go. J'ai testé les lectures/écritures séquentielles ainsi que les lectures/écritures aléatoires de 4 kilo-octets. Les résultats sont un peu faussés à cause de la mise en cache de l'écriture sur l'hôte.
La vitesse de lecture séquentielle sur l'hôte était de 561 MBps, la VM était de 531 MBps, la VM étant environ 5% plus lente que l'hôte.
Le contraire est vrai pour les vitesses d'écriture cependant, l'hôte était de 407 MBps, la VM était de 508, conduisant à la VM étant environ 25% plus rapide sur les écritures. Encore une fois, cela est probablement dû à certains effets de la mise en cache de l'écriture.
Passons maintenant à la partie amusante, les performances du GPU.
Il ne s'agit pas seulement des résultats de la performance réelle du jeu, mais aussi d'une mesure relative de la différence de performance du bus PCI lui-même. La différence de performance du CPU n'aurait pas d'impact ici puisque aucun de ces jeux n'est intensif en CPU. La différence de performance ici est le résultat du PCI passthrough via KVM, l'hôte transmettant un périphérique PCIe à une machine virtuelle.
En commençant par Unigine Heaven, cela devrait être la représentation la plus précise de tous les tests GPU. Le benchmark s'exécute exactement de la même manière à chaque fois et rapporte des données spécifiques à chaque exécution.
Dans Unigine Heaven, l'hôte a tourné à une moyenne de 62,7 FPS, la VM a tourné à une moyenne de 61,1 FPS pour une différence de performance de 2,5%. Ceci, tout comme les résultats du CPU, est étonnant. KVM peut faire tourner un système d'exploitation invité à 95-98% de la performance native de l'hôte.
Bioshock Infinite n'a vu qu'une différence de 0,74% dans les performances,
CS:GO n'a connu qu'une différence de 1,63 %,
et Rocket League n'ont connu qu'un delta de performance de 4 %.
Certains jeux ont en fait mieux fonctionné dans la machine virtuelle, que ce soit en raison de la meilleure vitesse de lecture des disques dans la VM ou d'une autre anomalie, je ne peux pas le dire.
Borderlands : The Pre-Sequel est 8,7 % plus rapide dans la machine virtuelle.
et Metro Last Light est 2,2 % plus rapide.
Pour le plaisir, j'ai également lancé le test GPU de Geekbench et j'ai constaté que la VM n'était que 1,19 % plus lente que l'hôte, ce qui est encore une fois un résultat étonnant.
KVM et les technologies de virtualisation assisté par le matériel d'Intel ont parcouru un long chemin pour atteindre 95-98% des performances de l'hôte.