Was ist der Leistungsunterschied zwischen einer virtuellen Maschine und einem physischen Host?

Was ist der Leistungsunterschied zwischen einer virtuellen Maschine und einem physischen Host?

Bei mir auf der Arbeit verwenden wir relativ leistungsstarke PCs mit der Debian-Linux-Distribution. Für bestimmte Programme, die wir installieren müssen, wäre CentOS jedoch besser, und das wären unsere wichtigsten Arbeitstools. Ein Wechsel des Betriebssystems für alle Computer an unserem Arbeitsplatz ist eine Möglichkeit, aber wir versuchen zu entscheiden, ob der Einfachheit halber VirtualBox die bessere Wahl ist.

Dies alles hängt vom folgenden Punkt ab. Die Programme, die wir ausführen müssen, sind Simulatoren, die sehr prozessorintensive Aufgaben sind und bei jedem Start einer Simulation problemlos eine Stunde oder länger dauern können. Wir müssen entscheiden, ob der Leistungsabfall bei der Verwendung von Virtual Box groß genug ist, um einen Betriebssystemwechsel zu rechtfertigen.

Meine Frage lautet also: Kann mir jemand nachweislich sagen, wie hoch die Leistungseinbußen sind, wenn ich eine prozessorintensive Aufgabe in einer Virtual Box im Vergleich zur Ausführung auf dem nativen PC ausführe?

Danke.

Antwort1

Bei rechenintensiven Programmen (die stark CPU-belastet sind) sollte es für die VM praktisch keine Leistungseinbußen geben. Die Anweisungen werden direkt auf der CPU ausgeführt, was für Host und VM gleich ist.

Selbst bei anspruchsvollen Kompilierungsaufgaben ist der Leistungsunterschied kaum spürbar. Wir führen CentOS-VMs in VMware unter Windows aus.

Da Sie Linux auf dem Host ausführen, sollten Sie auch Folgendes in Betracht ziehen:KVM(Kernel Virtual Machine) anstelle von VirtualBox. Es handelt sich um eine Reihe von Kernelmodulen, die Virtualisierungsdienste in Linux bereitstellen und dabei die Intel VT-x-Virtualisierungserweiterungen verwenden, die auf fast allen modernen CPUs verfügbar sind. QEMU verwendet KVM als Beschleuniger, um x86-Code direkt auf der Host-CPU auszuführen.

Installieren Sie es einfach, virt-managerum es auszuprobieren.

Antwort2

Tatsächlich klingt es so, als wäre Docker für das, was Sie tun, eine noch bessere Option. Docker stellt Container bereit, bei denen es sich um isolierte Sandboxen handelt, die auf demselben Kernel ausgeführt werden. Der Systemaufruf-/IO-Overhead beträgt null, da sich Ihre Prozesse im Container nicht von denen auf dem Host unterscheiden.

Da Sie bereits Linux verwenden, wäre Docker eine hervorragende Möglichkeit, eine CentOS-Umgebung bereitzustellen, ohne alle Ihre Maschinen neu installieren zu müssen.

Schauen Sie sich auch mein Dienstprogramm an,TauchenDadurch wird es einfach, Dinge wie Builds in einem Docker-Container auszuführen. Anstatt von running makewürden Sie run ausführen scuba make. Das ist alles!

Antwort3

Darauf gibt es keine allgemeingültige Antwort. Es hängt stark davon ab, wie und mit welchen Programmen Sie eine VM verwenden.

Beispielsweise ergab die Verwendung von VMWare (ein Hypervisor vom Typ 2) und einem rein CPU-gebundenen Programm fast die volle CPU-Geschwindigkeit. Wenn ich denselben Hypervisor mit einem Programm mit vielen Systemaufrufen verwenden würde, würde die Leistung deutlich sinken.

Und die Dinge ändern sich auch, wenn Sie ein Hypervisor-Betriebssystem vom Typ 1 (kein Gast) verwenden. Und selbst zwischen diesen gibt es viele Variationen. Beispielsweise Xen mit 5 (soweit ich mich erinnere, aus dem FOSDEM-Vortrag vom letzten Wochenende über Xen) Modi, die es unterstützt. Von HW-Nutzung bis hin zu Paravirtualisierung.

Um es noch einmal zusammenzufassen: Wie gewünscht kann die Geschwindigkeit von nahezu keiner bis hin zu einer deutlichen Verlangsamung variieren.


Wenn ich mich jetzt auf VirtualBox konzentriere, ist das ein Hypervisor vom Typ 2. Rein CPU-gebundene Programme sollten kein Problem sein.

verwandte Informationen