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

15

Wo ich arbeite, betreiben wir relativ leistungsfähige PCs mit der Debian Linux Distribution. Für bestimmte Programme, die wir installieren müssen, wäre es jedoch besser, CentOS zu haben, und dies wären unsere Hauptarbeitswerkzeuge. Das Ändern des Betriebssystems für alle Computer an unserem Arbeitsplatz ist möglich, aber wir versuchen zu entscheiden, ob die Verwendung von VirtualBox der Einfachheit halber die bessere Wahl ist.

Dies alles hängt vom folgenden Punkt ab. Die Programme, die wir ausführen müssen, sind Simulatoren, bei denen es sich um sehr prozessorintensive Aufgaben handelt, die bei jedem Start einer Simulation problemlos bis zu einer Stunde oder länger ausgeführt werden können. Wir müssen entscheiden, ob der Leistungsabfall bei Verwendung von Virtual Box groß genug ist, um unseren Betriebssystemwechsel zu verdienen.

Meine Frage ist also, ob mir jemand nachweislich sagen kann, welche Leistung die Ausführung einer prozessorintensiven Aufgabe in einer virtuellen Box im Vergleich zur Ausführung auf dem nativen PC beeinträchtigt.

Vielen Dank.

aarelovich
quelle

Antworten:

15

Bei Programmen mit Zahlenverarbeitung (sehr CPU-gebunden) sollte die Leistung der VM nahezu null sein. Die Anweisungen werden direkt auf der CPU ausgeführt, was für Host und VM gleich ist.

Selbst bei ernsthaften 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, können Sie auch KVM (Kernel Virtual Machine) anstelle von VirtualBox in Betracht ziehen . Es handelt sich um eine Reihe von Kernelmodulen, die Virtualisierungsdienste unter Linux bereitstellen und die Intel VT-x-Virtualisierungserweiterungen verwenden, die auf den meisten modernen CPUs verfügbar sind. QEMU verwendet KVM als Beschleuniger, um x86-Code direkt auf der Host-CPU auszuführen.

Installieren Sie einfach das virt-manager, um es auszuprobieren.

Jonathon Reinhart
quelle
OK. Ich werde das versuchen. Danke für die Antwort.
Aarelovich
Wie verhält sich KVM in Bezug auf die Leistung zu VirtualBox (beispielsweise Windows 10 unter Linux)?
Royi
Sie sollten nahezu identisch sein, wenn VirtualBox die CPU-Virtualisierungserweiterungen nutzt (wie dies bei KVM der Fall ist) und die Arbeitslast hauptsächlich an die CPU gebunden ist. Wenn die Aufgaben E / A-schwer sind, hängt die Leistung von der ausgewählten Hardware ab. KVM verfügt über paravirtualisierte Treiber (virtio), die die von emulierten Geräten (z. B. E1000 NIC und LSI SCSI Disk Controller) deutlich übertreffen können. Im Allgemeinen sollten sie jedoch einigermaßen nahe sein.
Jonathon Reinhart
6

Darauf gibt es keine einzige gute Antwort. Es hängt sehr davon ab, wie Sie eine VM verwenden und welche Programme.

Beispielsweise ergab die Verwendung von VMWare (einem Hypervisor vom Typ 2) und einem rein CPU-gebundenen Programm eine nahezu volle CPU-Geschwindigkeit. Wenn ich denselben Hypervisor und ein Programm mit vielen Systemaufrufen verwenden würde, würde ich eine ernsthafte Verlangsamung bekommen.

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. ZB Xen mit 5 (IIRC vom letzten Wochenende FOSDEM Talk on Xen) Modi, die es unterstützt. Von HW mit zu para virtualisiert.

Um es noch einmal zusammenzufassen: Wie gefragt kann es von fast keiner Verlangsamung bis zu ernsthaft langsamer variieren.


Wenn ich mich auf VirtualBox konzentriere, ist das ein Typ-2-Hypervisor. Rein CPU-gebundene Programme sollten in Ordnung sein.

Hennes
quelle
Die meisten dieser Programme wandeln im Wesentlichen eine Sprache in C-Code um und kompilieren sie. Wenn wir eine Simulation ausführen, wird diese Kompilierung ausgeführt. Nach Ihrer Meinung sollte es dann in Ordnung sein?
Aarelovich
Ich vermute, dass die Leistung in Ordnung sein wird. Meine Erfahrung mit virtuellen Boxen ist begrenzt (ich habe hauptsächlich VMware Workstation verwendet), aber ich sehe keine technischen Gründe, warum es langsam sein sollte.
Hennes
Wie verhält sich KVM in Bezug auf die Leistung zu VirtualBox (beispielsweise Windows 10 unter Linux)?
Royi
5

Eigentlich klingt es so, als wäre Docker eine noch bessere Option für das, was Sie tun. Docker stellt Container bereit, bei denen es sich um isolierte Sandboxen handelt, die auf demselben Kernel ausgeführt werden. Der Systemaufruf- / E / A-Overhead ist Null, da sich Ihre In-Container-Prozesse nicht von denen auf dem Host unterscheiden.

Da Sie bereits Linux ausführen, ist Docker eine hervorragende Möglichkeit, eine CentOS-Umgebung bereitzustellen, ohne alle Ihre Computer neu installieren zu müssen.

Schauen Sie sich auch mein Dienstprogramm Scuba an, mit dem Sie ganz einfach Builds in einem Docker-Container ausführen können. Anstatt zu rennen make, würdest du rennen scuba make. Das ist alles!

Jonathon Reinhart
quelle
Lassen Sie mich wissen, wenn Sie dies ausprobieren möchten und Hilfe beim Einstieg benötigen.
Jonathon Reinhart
Vielen Dank, aber das ist lange her und die Entscheidung wurde getroffen, um den Umzug zu machen. Aber ich werde dies berücksichtigen, wenn ich ein Programm ausführen muss, das Probleme beim Ausführen von con CentOS hat.
Aarelovich