Les performances des hyperviseurs correspondent, en informatique, au comportement d'un moniteur de machines virtuelles ou hyperviseur pour gérer une ou plusieurs machines virtuelles, une machine virtuelle fonctionne comme une machine physique avec un hyperviseur fournissant une couche de virtualisation matérielle.

Il existe plusieurs architectures d'hyperviseurs pour virtualiser un système et gérer les ressources matérielles, leurs mécanismes apportent un niveau de performance pour les machines virtuelles. Selon l'hyperviseur utilisé, le processeur, la mémoire, les entrées/sorties et le stockage sont des éléments nécessaires sur lesquels les hyperviseurs doivent agir pour la virtualisation. Selon les besoins d'utilisation, une architecture d'hyperviseur est à privilégier pour ses performances.

Comparaison des stratégies d'hypervision

L'isolation procurée par la virtualisation limite la visibilité d'une application dans une machine virtuelle, c'est une cause des anomalies de performance qui se produisent dans un environnement virtualisé. Plus précisément, un utilisateur qui exécute la même machine virtuelle, sur le même matériel, à différents moments, verra une grande disparité dans les performances. Les performances sont basées sur le travail effectué par d'autres machines virtuelles sur l'hôte physique .

Les hyperviseurs de type container (Docker, LXC) sont soumis au partage du noyau du système d'exploitation entre l'hôte et l'invité. Il est impossible d'utiliser un container Windows sur un hôte Linux .

Cette limitation n'est pas un problème pour les data-centers, pourtant les noyaux de systèmes d'exploitation partagés soulèvent un risque plus grand pour la sécurité que d'exécuter plusieurs noyaux sur une même machine hôte .

Comparaison entre para-virtualisation et full-virtualisation Le nombre maximal d'opérations à virgules flottantes sur un système Fedora 8 virtualisé avec KVM est environ 83,46 % égale à la version native, environ 97,28 % avec Xen. Cela suggère que l'efficacité du traitement de KVM sur les nombres à virgules flottantes n'est pas aussi bon que Xen. KVM doit vérifier si chaque instruction d'exécution est une interruption, un défaut de page, entrée/sortie ou une instruction commune et décider de quitter ou de rester en mode invité, cette décision gaspille beaucoup de temps. Au contraire, Xen permet aux systèmes invités d'exécuter des instructions de calcul avec virgule flottante sur le processeur hôte pour gagner du temps de résolution. KVM, qui permet l'utilisation de partition physique de l'hôte, offre des performances native pour la lecture des données, mais n'est capable d'atteindre que 62 % des performances natives pour l'écriture .

Comparaison d'hyperviseurs pour les HPC Walters et al. ont testé les performances et la capacité d'évolution de VMWare Server, Xen et OpenVZ pour des applications distribuées HPC. Leurs travaux portent sur des tests de transmission sur le réseau, et sur le comportement du système de fichier. Leurs résultats montrent que Xen surpasse OpenVZ et VMWare Server en utilisation de la bande passante, Xen est capable d'utiliser 94,5 % de la bande passante du système hôte .

Les résultats sur les systèmes de fichiers montrent qu'OpenVZ a des performances très proches d'un système natif, avec des performances de 90 % d'un système natif dans le pire des cas (opérations sur des fichiers de ). Les systèmes invités d'OpenVZ résident dans le système de l'hôte comme des répertoires de fichiers. Xen, qui utilise la gestion par volumes logiques (LVM) pour le stockage d'invité, présente des performances plus faibles avec des surcharges de 46 % en lecture et 40 % en écriture . KVM, qui permet l'utilisation de partition physique de l'hôte, offre les performances du système hôte pour la lecture des données, mais n'est capable d'atteindre que 62 % des performances par rapport à un système natif pour l'écriture .

Différents aspects de la performance pour des hyperviseurs

Performances des mécanismes de la virtualisation Les hyperviseurs ont besoin d'isoler les interruptions et les accès à la mémoire. C'est très coûteux quant aux performances, auparavant cette opération était réalisée par un mécanisme de translation de code. Depuis quelques années, les fabricants de processeurs ont ajouté des instructions spécialisées (Intel VT-x / EPT et AMD-V / RVI) afin de permettre la virtualisation assistée par le matériel. KVM + QEMU et VirtualBox, utilisent ces instructions. Le procédé impose à l'hyperviseur d'exposer explicitement les extensions de virtualisation du jeu d'instructions au système d'exploitation invité sous-jacent .

Performances de la gestion des ressources par un hyperviseur Les surcoûts quant aux performances pour virtualiser un système comportent trois aspects principaux : la virtualisation du processeur, de la mémoire et des entrées/sorties. Les hyperviseurs très performants tels que Xen et VMware sont en mesure de réaliser la virtualisation du processeur et de la mémoire avec très peu de ressources .

Architecture et ressources nécessaires

L'architecture bare-metal apporte des performances très similaires à un système installé nativement mais il fournit le minimum d'isolation entre les processus en cours . Processeur L'utilisation d'un hyperviseur au-dessous du système d'exploitation diffère du schéma habituel où le système d'exploitation est l'entité la plus privilégiée dans le système. Afin de protéger l'hyperviseur de débordements du système d'exploitation invité et des domaines les uns sur les autres, les OS invités doivent être modifiés pour fonctionner à un niveau de privilège inférieur .

De nombreuses architectures de processeur ne fournissent que deux niveaux de privilèges. Dans une virtualisation efficace, des niveaux de privilèges supplémentaires sont disponibles sur x86, car il prend en charge quatre niveaux de privilèges distincts dans le matériel .

L'utilisation du processeur a des implications critiques sur les performances des autres caractéristiques du système, à savoir sur la consommation d'énergie. L'implication ne se limite pas au cas où le processeur fonctionne à 100 %. Plus la charge du processeur augmente, plus la consommation de ce dernier est importante .

Dans l'évaluation des performances d'une machine virtuelle, les processus sont gérés par la machine virtuelle à la place du système d'exploitation sous-jacent. Les threads émulés des environnements multi-thread, en dehors des capacités du système d'exploitation d'origine, sont gérés dans l'espace utilisateur à la place de l'espace noyau, permettant le travail avec des environnements sans support natif des threads .

De bonnes performances sur un microprocesseur multi-cœur sont obtenues grâce à l'implémentation de threads natifs pouvant attribuer automatiquement le travail à plusieurs processeurs, ils permettent un démarrage plus rapide de processus sur certaines machines virtuelles. Un thread a la possibilité de bloquer les autres threads pour effectuer une opération d'entrée/sortie. Pour éviter le problème, les threads doivent utiliser des opérations d'entrée/sortie asynchrones. La complexité accrue peut être cachée par la mise en œuvre de processus d'entrée/sortie séparés natifs qui coopèrent avec les threads .

Mémoire La mémoire virtuelle est la partie la plus difficile à créer avec la paravirtualisation :

L'architecture X86 ne possède pas de gestion logicielle du TLB (mémoire cache du processeur); lorsque la place manque, les TLB sont nettoyées automatiquement par le processeur en ré-écrivant sur la structure de la table de pages. Pour obtenir la meilleure performance possible, toutes les traductions de page valides pour l'espace de l'adresse actuelle doivent être présents dans la table de pages .

Entrées/sorties et stockage La virtualisation des entrées/sorties par un hyperviseur pose un problème complexe. Les périphériques d'entrée/sortie sont généralement partagés entre toutes les machines virtuelles dans une machine physique, l'hyperviseur doit vérifier que les accès des périphériques sont légaux cela nécessite que l'hyperviseur ou un domaine privilégié doit intervenir sur tous les accès d'entrée/sortie du client de machine virtuelle. L'intervention conduit à plus de latence aux entrées/sorties et plus de ressources CPU en raison de changements de contexte entre les machines virtuelles invitées et l'hyperviseur .

Les machines virtuelles hébergent un système d'exploitation, des applications, des services et éventuellement des données. Elles exigent une grande place de stockage sur le disque. Une quantité importante de l'activité d'entrée/sortie est réservée pour garder plusieurs machines virtuelles vivantes sur un seul serveur. Les applications nécessitant une grande quantité d'entrée/sortie, comme les serveurs de base de données, pourraient faire face à d'importants ralentissements si les sous-systèmes d'entrée/sortie ne sont pas en mesure de faire face à la charge accrue. Le stockage est une ressource clé pour un environnement virtualisé. Après tout, une machine virtuelle est techniquement un ensemble de fichiers qui peut contenir un système d'exploitation avec ses applications installées .

Caractéristiques et utilisation des outils de virtualisation +Caractéristiques et utilisation des outils de virtualisation Outil de virtualisationDisponibilitéAvantageMode de virtualisationVMwareCommercialGestion de l'infrastructure virtuelleFull virtualisationXenOpen sourceMigration des machines virtuellesPara-virtualisationQEMUOpen sourceSupport des architectures hétérogènes du matérielVirtualisation natifVNUML (Virtual Network User Mode Linux)Open sourceExécution d'OS invités comme une application normale au sein d'un système Linux hôteFull virtualisationUML (User Mode Linux)Open sourceSupport des systèmes LinuxPara-virtualisationVirtual BoxCommercialSupport des protocoles distants pour la version commercialeVirtualisation natifVMware WorkstationOpen sourceFonctionne en dessous d'un système d'exploitation open sourceFull virtualisationVMware Vcenter ConverterOpen sourceFonctionne en dessous d'un système d'exploitation open sourceFull virtualisationOpenVZOpen sourcePartitionnement des ressources, système de containeurVirtualisation niveau système d'exploitationBochsOpen sourceAnalyse des bugs sur les systèmes d'exploitation invitésEmulateurVMware serverGratuit, non open sourceFonctionne sur les plates-formes Windows et LinuxFull virtualisationMicrosoft Virtual PCCommercialSupport des logiciels MicrosoftFull virtualisationParallelsCommercialExécution de plusieurs systèmes invités, de plates-formes différentes sur un hôteFull virtualisationKVM (Kernel-based Virtual Machine)Open sourcePour les serveurs Linux, support processeur pour la virtualisationFull virtualisationVServerOpen sourceIsolation de plusieurs serveurs Linux sur une même plate-forme matérielle Full virtualisationLXC (Linux Container)Open sourcePour les systèmes hôte Linux, système de containeurPara-virtualisation

Notes et références

Bibliographie

Catégorie:Virtualisation