it-swarm.com.de

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

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. Es ist möglich, das Betriebssystem für alle Computer an unserem Arbeitsplatz zu ändern. Wir versuchen jedoch 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 rechenintensive 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 der Verwendung von Virtual Box groß genug ist, um unsere Änderung des Betriebssystems zu verdienen.

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

Vielen Dank.

11
aarelovich

Bei Programmen mit starker CPU-Auslastung sollte die Leistung der VM nahezu Null betragen. Die Anweisungen werden direkt auf der CPU ausgeführt, was für Host und VM identisch ist.

Selbst bei schwerwiegenden Übersetzungsaufgaben 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 auf den meisten modernen CPUs verfügbaren Intel VT-x-Virtualisierungserweiterungen verwenden. QEMU verwendet KVM als Beschleuniger, um x86-Code direkt auf der Host-CPU auszuführen.

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

12

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

Z.B. Mit VMWare (einem Hypervisor vom Typ 2) und einem rein CPU-gebundenen Programm wurde nahezu die volle CPU-Geschwindigkeit erreicht. Wenn ich den gleichen 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 Typ-1-Hypervisor-Betriebssystem (kein Gastbetriebssystem) verwenden. Und selbst dazwischen gibt es viele Variationen. Z.B. Xen mit 5 (IIRC von FOSDEM Talk on Xen vom letzten Wochenende) Modi, die es unterstützt. Von HW über Para virtualisiert.

Um es noch einmal zusammenzufassen: Wie gewünscht, kann es von fast keiner Verlangsamung bis zu ernsthafter Verlangsamung variieren.


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

5
Hennes

Tatsächlich scheint Docker eine noch bessere Option für Ihre Arbeit zu sein. Docker stellt Container bereit, bei denen es sich um isolierte Sandbox handelt, die auf demselben Kernel ausgeführt werden. Der Systemaufruf/IO -Overhead ist null, da sich Ihre In-Container-Prozesse nicht von denen auf dem Host unterscheiden.

Da Sie bereits Linux verwenden, ist Docker eine großartige Möglichkeit, um eine CentOS-Umgebung bereitzustellen, ohne alle Computer neu installieren zu müssen.

Schauen Sie sich auch mein Hilfsprogramm Scuba an, mit dem es einfach ist, Dinge wie Builds in einem Docker-Container auszuführen. Anstatt make auszuführen, würden Sie scuba make ausführen. Das ist alles!

4