Auswirkungen auf die Leistung von Linux in einer virtuellen Maschine unter Windows?

Ich möchte wissen, welche Auswirkungen auf die Leistung ich erwarten kann, wenn Linux in einer virtuellen Maschine in Windows ausgeführt wird. Der Job, für den ich Linux brauche, ist eine schwere und fast ununterbrochene Codekompilierung mit GCC. Dual-Boot sieht nicht nach einer sehr attraktiven Lösung aus, daher rechne ich gerade mit einem geringen VM-Overhead (10-20% wären in Ordnung, aber 50% oder mehr sind inakzeptabel). Hat jemand versucht, den Leistungsunterschied zu messen, gibt es Vergleichstabellen? Welche virtuelle Maschine mit dem geringsten Aufwand möglich ist, werden Sie vorschlagen?

Mein Host-Betriebssystem ist Win7 und ich habe einen modernen Core i7 mit VT-x.

Dank!

Author: undercat applauds Monica, 2010-05-29

1 answers

Einschränkung: Das Folgende basiert auf meinen subjektiven Beobachtungen und nicht auf richtigen objektiven Tests.

Disk-E / A für einige Lastmuster befinden sich am oberen Ende Ihrer 10-20% - Klammer, vielleicht etwas höher, aber nicht in der Nähe der 50%, die Sie angeben. Sie können den E/A-Treffer auf verschiedene Arten mildern, darunter:

  • Geben Sie der VM viel RAM, damit das Betriebssystem als Cache verwendet werden kann (dies bedeutet, dass der Hostcomputer natürlich viel RAM hat, da er sonst verhungert und mit dem Austauschen beginnt sowohl sich selbst als auch die VM)
  • Weisen Sie den VM-Manager an, keinen dem VM-Swap zugewiesenen RAM zuzulassen, wenn er ihm möglicherweise helfen kann
  • Stellen Sie sicher, dass die VM temporären Speicher im RAM hostet, indem Sie /tmp und ähnliches als tmpfs-Dateisysteme bereitstellen.
  • Treffen Sie eine gute Auswahl an Dateisystemen auf der Festplatte und zugehörigen Optimierungen in der VM. Wenn der gesamte Code und die Compiler-Ausgabe auch an anderer Stelle gespeichert werden, dh in der Quellcodeverwaltung und in Backups, sollten Sie die Journalisierung abbrechen, um die Schreibaktivität zu reduzieren. Auch wenn Ihr Dateisystem ist ext2/3 / 4 Verwenden Sie die Option noatime, wenn Ihr Build-Prozess damit in Ordnung ist (die meisten, wenn nicht alle, sind) oder relatime, wenn noatime nicht möglich ist (die meisten Distributionen verwenden jetzt standardmäßig relatime, denke ich).
  • Wenn Ihr Code und Ihre Ausgabe sicher an anderer Stelle kopiert werden, teilen Sie Ihrem VM-Manager ebenfalls mit, dass es in Ordnung ist, Schreibvorgänge auf die Vdisks der VM zu puffern.
  • Wenn Sie sich mit den riskanteren Optionen oben nicht sicher fühlen (mögliches verzögertes Schreib-Caching, keine FS-Journale), können Sie Ihren Build-Prozess optimieren, um RAM für temporärer Speicher, indem Sie es verwenden, dass tmpfs gemountet /tmp so viel wie möglich.
  • Haben Sie die Vdisks der VM auf einem separaten Laufwerk, wenn Sie können, auf diese Weise, wenn es einen beträchtlichen Teil der E/A-Operationen ausführen muss, wird es nicht so viel mit dem Host-Betriebssystem und anderen VMs konkurrieren.
  • Stellen Sie sicher, dass die VM virtuelle Festplatten fester Größe verwendet. Growable Disks erhöhen den IO-Performance-Hit, manchmal erheblich.

Der E / A-Treffer wird jeden CPU-Treffer etwas in den Schatten stellen, obwohl es auch hier sinkt die Leistung. Im Gegensatz zu E / A können Sie jedoch nur sehr wenig dagegen tun. Mit einer modernen CPU und einem Virtualisierungsprodukt, das die explizite Virtualisierungsunterstützung der CPU nutzen kann, sollte der Unterschied für vollständig CPU-gebundene Operationen nicht mehr als ein paar Prozent betragen. Versuchen Sie, virtuelles SMP zu vermeiden - dies kann aufgrund der Art und Weise, wie die physische CPU-Zeit geplant wird, langsamer sein, als der VM eine einzelne vCPU zu geben. In VMware muss mindestens ein Gast mit 2 vCPUs warten bis zwei Kerne frei sind, um eine Zeitscheibe vom Host-Scheduler zu erhalten - wenn der Host oben auf der VM unter Last steht, kann dies einen großen Unterschied machen, und wenn die Aufgaben hauptsächlich CPU-gebunden sind und entsprechend aufgeteilt werden können, ist es oft besser, zwei oder mehr VMs auszuführen(vorausgesetzt, Sie haben den RAM, um dies zu unterstützen), anstatt einer VM mehrere vCPUs zu geben.

Das von Ihnen angegebene Verwendungsmuster (konstante Kompilierungszyklen) wird von diesen Leistungstreffern beeinflusst, aber ich erwarte, dass Sie verlieren a viel weniger Zeit auf diese Weise, als Sie mit den Unannehmlichkeiten der Dual-Boot. Wenn Ihre Windows-Nutzung viel weniger CPU-und E/A-intensiv ist, dh nur Office-Apps verwendet werden und keine schwere DB-Arbeit oder-Spiele oder dergleichen erforderlich sind, sollten Sie Linux als Host und Windows in der VM ausführen.

 5
Author: David Spillett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-08-01 17:21:30