Les utilisateurs de systèmes virtualisés, et notamment les prestataires de services, se demandent très souvent: "comment tirer le meilleur parti du matériel disponible?" Et dans ce contexte, nous devons souvent discuter de l'hyperviseur KVM et des différences entre les différentes versions de Virtuozzo. Dans cet article, nous parlerons d'une série de tests du dernier système de virtualisation ainsi que d'estimations des performances réelles sous des charges typiques, ainsi que de la prise en compte des correctifs Meltdown et Spectre.
Qu'est-ce qui est le plus important pour une société d'hébergement ou pour un service informatique qui a besoin d'organiser le support pour le nombre maximum de tâches sur les équipements existants? Si une entreprise travaille selon un modèle orienté services ou vend des services, la pratique montre que l'essentiel est l'indicateur de profit par serveur. Quelles technologies sont utilisées en même temps et en raison desquelles la densité de distribution est atteinte, les représentants des entreprises ne sont pas tellement inquiets.
Cependant, la question de savoir pourquoi nous utilisons KVM comme hyperviseur dans Virtuozzo 7, et en quoi nous nous distinguons d'un simple système de virtualisation OpenSource dans ce cas, est très souvent posée. Et aujourd'hui, je veux y répondre.
Dans le passé, Virtuozzo travaillait avec son propre hyperviseur propriétaire, mais il y a plusieurs années, nous avons réalisé que le développer était plus cher et plus difficile que d'optimiser un KVM raisonnablement réussi et efficace. Cependant, KVM n'est pas une référence pour les performances et, comme toute plate-forme OpenSource, il doit être mis à jour avec un fichier. Cela fait partie de notre département de développement. Nous optimisons le code, l'intégrons à la plate-forme de stockage de données et à d'autres composants, augmentant ainsi la productivité et la densité.
Comparaison avec d'autres hyperviseurs
L'un des tests que nous utilisons pour mesurer les performances est le DVD Store. Il utilise un ensemble classique de logiciels serveurs: Linux, Apache, MySQL, PHP (LAMP). À l'intérieur de chaque machine virtuelle, le test émule le fonctionnement d'une boutique de DVD en ligne. Le résultat du test est le nombre de transatals engagés au total dans toutes les machines virtuelles (axe des ordonnées). Le nombre de machines virtuelles impliquées dans le test augmente séquentiellement de 1 à 100 (axe des abscisses).
LAMP: OpenSource QEMU KVM vs Virtuozzo @ CentOS 7.4 (machines virtuelles)
Comme vous pouvez le voir dans les graphiques ci-dessus, les performances des machines virtuelles avec CentOS Linux 7.4 fonctionnant sur l'hyperviseur Virtuozzo 7 sont jusqu'à 30% supérieures à celles lors du démarrage d'une charge similaire sur le KVM standard. La plus grande différence est observée au moment de la sur-validation du processeur, où le nombre total de cœurs de processeur alloués à toutes les machines virtuelles atteint le nombre de cœurs physiques du serveur de processeur. Pour ce serveur, ce point correspond à 20 machines virtuelles. En outre, le noyau Virtuozzo 7 et la politique de gestion adaptative de la mémoire garantissent un fonctionnement stable des machines virtuelles après le point de sur-validation de la RAM, où la quantité totale de RAM allouée à toutes les machines virtuelles dépasse la taille de la mémoire physique du serveur. Avec une telle charge, le KVM standard ne peut pas créer les conditions d'un fonctionnement normal.
Une autre comparaison a été faite entre l'hyperviseur Virtuozzo 7 et Microsoft Hyper-V 3.0. Ici, les performances ont été évaluées à l'aide du test vConsolidate et Windows Server 2012 R2 a été utilisé comme système d'exploitation invité pour les machines virtuelles.
vConsolidate: Hyper-V vs Virtuozzo @ Windows 2012 R2 (machines virtuelles)
Contrairement au DVD Store, dans vConsolidate, la charge n'est pas la même pour toutes les machines virtuelles. Dans ce test, ils sont divisés en ce que l'on appelle les CSU (Consolidation Stack Units). Chaque CSU est un groupe de quatre machines virtuelles qui chargent SPECjbb, WebBench et SysBench (OLTP). La quatrième machine virtuelle de chaque CSU est inactive, c'est-à-dire sans charge. Le résultat quantitatif est la moyenne géométrique des résultats des trois tests susmentionnés obtenus au total sur toutes les machines virtuelles (axe des ordonnées). Le nombre de CSU impliquées dans le test augmente séquentiellement de 1 à 24 (abscisses).
Pour les deux hyperviseurs, le test a été effectué deux fois: avec des correctifs pour les vulnérabilités Meltdown et Spectre installés, ainsi que sans eux. Une approximation des résultats montre que Virtuozzo 7 affiche en moyenne 15% de performances supérieures à l'hyperviseur Microsoft "natif".
Fusion et spectre
Comme vous le savez, le 4 janvier 2018, toute la communauté informatique a été enthousiasmée par la découverte de vulnérabilités conceptuelles à grande échelle dans tous les processeurs Intel, à l'exception d'Itanium et d'Atom plus ancien (jusqu'en 2013). L'utilisation de ces vulnérabilités permet à tout processus non privilégié du système d'accéder aux données du noyau (Meltdown) ou aux données d'un autre processus (Spectre). Les développeurs de logiciels se sont concentrés sur la publication de mises à jour logicielles pour corriger ces vulnérabilités. Cependant, les utilisateurs avaient naturellement des questions sur la façon dont ces mises à jour affectaient les performances du système.
Nous avons vérifié comment les correctifs pour Meltdown et Spectre affectent les performances des conteneurs avec CentOS Linux 7.4 en utilisant le test vConsolidate comme exemple. Ensuite, nous avons fait une autre mesure - avec le noyau, un compilateur modifié compilé avec l'option «Retpoline» (par exemple, GCC et Clang / LLVM offrent cette option).
Performances avec Retpoline: vConsolidate @ CentOS 7.4 (conteneurs)
Comme vous pouvez le voir dans les graphiques ci-dessus, l'application de correctifs contre Meltdown et Spectre réduit considérablement les performances du conteneur. De plus, le patch le plus «difficile» était pour Spectre-V2. Cependant, l'utilisation du compilateur avec la nouvelle option Retpoline vous permet d'abandonner ce correctif en toute sécurité sur les systèmes avec des processeurs plus anciens que Skylake et de gagner jusqu'à 25% des performances. Cependant, nous avons encore perdu environ 5% en raison des correctifs pour Meltdown et Spectre-V1.
Performances avec Retpoline: vConsolidate @ CentOS 7.4 (machines virtuelles)
Dans le cas de CentOS Linux 7.4, la situation à l'intérieur des machines virtuelles est un peu plus rose: les correctifs pour Meltdown et Spectre dégradent les performances de seulement 15%, et la différence de performances entre le noyau non corrigé et le noyau compilé avec Retpoline n'est que de 1-2%. Ainsi, l'utilisation du nouveau compilateur a permis de compenser presque complètement la baisse des performances. Cependant, il convient de noter que les trois mesures ont été effectuées sur les mêmes machines virtuelles - avec des noyaux OS invités non corrigés. La mise à jour des systèmes d'exploitation invités entraînera une dégradation supplémentaire des performances des applications utilisateur.
Performances avec Retpoline: vConsolidate @ Windows 2012 R2 (machines virtuelles)
Le dernier graphique d'aujourd'hui est une comparaison similaire, mais avec les machines virtuelles Windows Server 2012 R2. Ici, le ralentissement des correctifs n'était pas si important et s'élevait à environ 10%, et l'utilisation du noyau avec Retpoline a permis de réduire la différence à 2-3% par rapport au noyau non corrigé.
Conclusion
Bien sûr, le KVM non modifié a ses avantages, et le principal avantage est qu'il est gratuit. Mais les tests effectués prouvent que les améliorations et la modernisation privées peuvent améliorer le retour sur l'infrastructure utilisée. Autrement dit, si vous devez placer un maximum de conteneurs et de machines virtuelles, assurer un stockage permanent pour eux - tous sur la même plate-forme et avec un minimum de danses chamaniques - le KVM amélioré est beaucoup plus efficace, surtout si les services exécutés sur la plate-forme affichent de bonnes marges et apportent une réelle l'argent. Dans ce cas, le coût des licences et du support est plus que rentable dans les plus brefs délais.
La force de VZ7 reste la prise en charge de différents types de machines virtuelles et de conteneurs sur la même plate-forme, et avec des performances plus élevées pour chaque catégorie d'objets virtuels. Mais on ne peut pas non plus parler ici de panacée. Par exemple, si une augmentation de la densité n'apporte pas de financement supplémentaire à l'organisation et que son propre personnel peut administrer et terminer les solutions OpenSource, la logique a tendance à utiliser des outils ouverts, notamment CentOS et le KVM d'origine.
Soit dit en passant, dans le prochain article, nous parlerons de l'évolution de notre stockage distribué et de ses capacités réelles pour travailler avec des machines virtuelles et des conteneurs.