web-dev-qa-db-fra.com

Quelle est la différence entre une machine virtuelle et l'hôte physique?

Là où je travaille, nous utilisons des PC relativement puissants utilisant la distribution Linux Debian. Toutefois, pour certains programmes que nous devons installer, il serait préférable d’utiliser CentOS, qui constitueraient 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 utiliser VirtualBox est un meilleur choix de simplicité.

Tout cela dépend du point suivant. Les programmes que nous devons exécuter sont des simulateurs, tâches très gourmandes en ressources de calcul 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.

Ma question est donc la suivante: est-ce que quelqu'un peut me dire de façon vérifiable quelle est la performance de l'exécution d'une tâche gourmande en ressources processeur dans une boîte virtuelle par rapport à son exécution sur un PC natif?

Merci.

11
aarelovich

Pour les programmes de traitement de chiffres (très liés au processeur), la performance de la machine virtuelle devrait être quasi nulle. Les instructions sont exécutées directement sur la CPU, ce qui est la 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 utilisez Linux sur l'hôte, vous pouvez également considérer KVM (machine virtuelle du noyau) au lieu de VirtualBox. Il s'agit d'une série de modules de noyau fournissant des services de virtualisation sous Linux, utilisant les extensions de virtualisation Intel VT-x disponibles sur la plupart des processeurs modernes. QEMU utilise KVM en tant qu'accélérateur pour exécuter du code x86 directement sur le processeur hôte.

Installez simplement le virt-manager pour l'essayer.

12
Jonathon Reinhart

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

Par exemple. L’utilisation de VMWare (hyperviseur de type 2) et d’un programme purement lié au processeur a permis d’obtenir une vitesse de traitement presque complète. Si j'utilisais le même hyperviseur dans un programme avec beaucoup d'appels système, j'obtiendrais un ralentissement important.

Et les choses changent également lorsque vous utilisez un système d'exploitation hyperviseur de type 1 (sans 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 sur Xen) qu’il prend en charge. De HW utilisant à para virtualisé.

Pour récapituler: comme demandé, cela peut varier d’un quasi-ralentissement à un ralentissement important.


Maintenant, si je me concentre sur VirtualBox, il s’agit d’un hyperviseur de type 2. Les programmes purement liés au processeur devraient convenir.

5
Hennes

En fait, il semble que Docker pourrait être une option encore meilleure pour ce que vous faites. Docker fournit des conteneurs, qui sont des sandbox isolés qui s'exécutent sur le même noyau. L'appel système/IO overhead est égal à zéro, car vos processus internes 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 tâches telles que la génération dans un conteneur Docker. Au lieu d’exécuter make, vous exécuteriez scuba make. C'est tout!

4
Jonathon Reinhart