Quelle est la différence de performances d'une machine virtuelle par rapport à l'hôte physique?

15

Là où je travaille, nous utilisons des PC relativement puissants utilisant la distribution Debian Linux. Cependant, pour certains programmes que nous devons installer, il serait préférable d'avoir CentOS et ce seront nos principaux outils de travail. Changer le système d'exploitation pour tous les ordinateurs de notre lieu de travail est une possibilité, mais nous essayons de décider si l'utilisation de VirtualBox est un meilleur choix pour la simplicité.

Tout cela dépend du point suivant. Les programmes que nous devons exécuter sont des simulateurs qui sont des tâches très gourmandes en processeur qui peuvent facilement s'exécuter jusqu'à une heure ou plus chaque fois qu'une simulation est lancée. Nous devons décider si la dégradation des performances lors de l'utilisation de Virtual Box est suffisamment importante pour mériter notre changement de système d'exploitation.

Donc, ma question est de savoir si quelqu'un peut me dire de manière vérifiable quelles sont les performances atteintes lors de l'exécution d'une tâche gourmande en processeur dans une boîte virtuelle par rapport à son exécution sur le PC natif?

Merci.

aarelovich
la source

Réponses:

15

Pour les programmes chiffrés (très liés au processeur), les performances devraient être presque nulles pour la machine virtuelle. Les instructions s'exécutent directement sur le CPU, ce qui est le même pour l'hôte et la VM.

Même pour les tâches de compilation sérieuses, la différence de performances est à peine perceptible. Nous exécutons des machines virtuelles CentOS dans VMware sous Windows.

Puisque vous exécutez Linux sur l'hôte, vous pouvez également envisager KVM (Kernel Virtual Machine) au lieu de VirtualBox. Il s'agit d'une série de modules du noyau qui fournit des services de virtualisation sous Linux, en utilisant les extensions de virtualisation Intel VT-x disponibles sur la plupart des processeurs modernes. QEMU utilise KVM comme accélérateur pour exécuter le code x86 directement sur le CPU hôte.

Installez simplement le virt-managerpour l'essayer.

Jonathon Reinhart
la source
D'accord. Je vais essayer ça. Merci pour la réponse.
aarelovich
Comment, en termes de performances, KVM se compare-t-il à VirtualBox (disons en exécutant Windows 10 sur un système Linux)?
Royi
Ils devraient être presque identiques si VirtualBox tire parti des extensions de virtualisation du processeur (comme le fait KVM), et la charge de travail est principalement liée au processeur. Si les tâches sont lourdes d'E / S, les performances varient en fonction du matériel sélectionné. KVM possède des pilotes paravirtualisés (virtio) qui peuvent largement dépasser ceux des périphériques émulés (par exemple le contrôleur de disque E1000 NIC et LSI SCSI). En règle générale, ils doivent être raisonnablement proches.
Jonathon Reinhart
6

Il n'y a pas une seule bonne réponse à cela. Cela dépend beaucoup de la façon dont vous utilisez une machine virtuelle et des programmes.

Par exemple, l'utilisation de VMWare (un hyperviseur de type 2) et d'un programme purement lié au CPU a produit une vitesse CPU presque complète. Si j'utilisais le même hyperviseur et un programme avec beaucoup d'appels système, j'obtiendrais un sérieux ralentissement.

Et les choses changent également lorsque vous utilisez un système d'exploitation hyperviseur de type 1 (pas d'invité). Et même entre ceux-ci, vous avez beaucoup de variations. Par exemple Xen avec 5 modes (IIRC du week-end dernier, FOSDEM parle de Xen) qu'il prend en charge. De HW utilisant à para virtualisé.

Pour récapituler: Comme demandé, il peut varier de presque aucun ralentissement à un ralentissement sérieux.


Maintenant, si je me concentre sur VirtualBox, c'est un hyperviseur de type 2. Les programmes purement liés au CPU devraient convenir.

Hennes
la source
La plupart de ces programmes transforment un langage en code C et le compilent. Lorsque nous exécutons une simulation, cette compilation est exécutée. Accoridng à vous, alors ça devrait aller?
aarelovich
Je soupçonne que les performances seront bonnes. Mon expérience de boîte virtuelle est limitée (j'ai principalement utilisé une station de travail VMware), mais je ne vois aucune raison technique pour laquelle cela devrait être lent.
Hennes
Comment, en termes de performances, KVM se compare-t-il à VirtualBox (disons en exécutant Windows 10 sur un système Linux)?
Royi
5

En fait, il semble que Docker pourrait être une meilleure option pour ce que vous faites. Docker fournit des conteneurs, qui sont des sandbox isolés qui s'exécutent sur le même noyau. La surcharge d'appel système / d'E / S est nulle, car vos processus dans le conteneur ne sont pas différents de ceux de l'hôte.

Puisque vous utilisez déjà Linux, Docker serait un excellent moyen de fournir un environnement CentOS sans avoir à réinstaller toutes vos machines.

Consultez également mon utilitaire, Scuba, qui facilite l'exécution de choses comme les builds à l'intérieur d'un conteneur Docker. Au lieu de courir, makevous courriez scuba make. C'est tout!

Jonathon Reinhart
la source
Faites-moi savoir si vous souhaitez l'essayer et avez besoin d'aide pour commencer.
Jonathon Reinhart
Merci mais c'était il y a longtemps et la décision a été prise de déménager. Mais je prendrai cela en compte lorsque je devrai exécuter un programme qui a des problèmes avec Con CentOS.
aarelovich