it-swarm.com.de

Gibt es echte Vorteile, wenn Sie VirtualBox mehr "Kerne" zuweisen?

Ich habe einen 2.8 Quad Core i7 mit einer VirtualBox. Ich habe die Option, einem Gastcomputer bis zu 4 Kerne zuzuweisen, aber ich habe nur zwei Kerne erstellt. Was sind die Vor-/Nachteile, wenn einem Gast mehr Kerne zugewiesen werden? Übrigens, ich kann StarCraft 2 immer noch in Ultra-Einstellungen spielen, während zwei Gastbetriebssysteme (Win 7 und Ubuntu) ausgeführt werden, und dasselbe gilt für BFBC2 (meine Stresstester). Wie reagiert der i7 auf ungleiche Belastungen über Kerne hinweg?

40
Chad Harrison

Die "virtuellen" Kerne, die Sie einem VM zuweisen, können im Client-Betriebssystem für die Mehrfachverarbeitung verwendet werden. Wenn Sie einer VM nur einen Kern zuweisen, hat das Gastbetriebssystem keine Möglichkeit, die Last auf mehrere Kerne zu verteilen. Nehmen wir also einige praktische Szenarien an:

Host mit 4 CPUs, Gast zugewiesen 1 CPU

  • Host-Computer mit 4 physischen Kernen
  • Client-Betriebssystem innerhalb von VM hat 1 Core zugewiesen

In diesem Fall kann das Gastbetriebssystem nur einen Kern verwenden. Wenn Sie also eine Multithread-Anwendung ausführen, die sich gut auf mehrere Kerne skalieren lässt, wird sie immer noch auf nur einem Kern ausgeführt. Daher müssen alle Threads auf dem Gastbetriebssystem einen physischen Kern gemeinsam nutzen.

Wenn Sie in diesem Setup ein Gastbetriebssystem ausführen, das die CPU vollständig lädt, ergibt sich eine CPU-Auslastung des Host-Betriebssystems von ~ 25% (einer von 4 auf dem Host geladenen Kernen).

Natürlich können Sie weiterhin CPU-belastende Aufgaben in Ihrem Host-Betriebssystem ausführen und die verbleibenden 3 Kerne verwenden.

Host mit 4 CPUs, Gast zugewiesen 4 CPUs

  • Host-Computer mit 4 physischen Kernen
  • Client-Betriebssystem innerhalb von VM hat 4 Kerne zugewiesen

In diesem Fall können Sie gut skalierende Multithread-Anwendungen im Gast VM ausführen, die alle 4 virtuellen CPUs voll ausnutzen können. VirtualBox verwendet 4 physische Kerne, um Aufgaben zu verarbeiten, die innerhalb von VM geplant sind, und daher kann Ihre Host-CPU-Auslastung eine maximale Auslastung von 100% erreichen.

Also, welche Einstellung sollten Sie wählen?

Die Antwort auf diese Frage hängt ziemlich davon ab, was Sie tun möchten. In einigen Fällen kann es hilfreich sein, alle Kerne einem VM zuzuweisen oder sogar mehrere VM auszuführen, denen jeweils die volle Anzahl von CPUs zugewiesen ist. In solchen Fällen kann ein VM die gesamte Verarbeitungsleistung des Hosts nutzen. Wenn VMs mehr CPUs zugewiesen werden als tatsächlich vorhanden sind, werden die VMs durch die Last auf verschiedenen VMs beeinträchtigt. Um dies zu verhindern, können Sie einige Kerne bestimmten VMs zuweisen. Das Ausführen von 2 VMs mit jeweils 2 CPUs auf einem 4-Kern-Knoten könnte beispielsweise dazu beitragen, dass jede VM 2 dedizierte CPUs erhält (vorausgesetzt, das Host-Betriebssystem hat keine Last, die auch einen Teil der Rechenleistung beansprucht) ).

Hat es negative Auswirkungen auf meinen Host, wenn alle Kerne einer VM zugewiesen werden?

Dies hängt wiederum von der ausgeführten Software ab. Wenn Sie eine VM ausführen, die sich im Leerlauf befindet (es werden überhaupt keine CPU-intensiven Programme ausgeführt), liegt die von dieser VM auferlegte Last nahe 0%. Sie können sogar 10 VMs gleichzeitig ausführen und trotzdem eine Host-CPU-Auslastung von nahezu 0% feststellen, wenn alle VMs inaktiv sind.

Wie verhält sich die CPU bei ungleichmäßiger Auslastung?

Nun, die CPU-Lastverteilung hängt stark von einer betriebssystemspezifischen integrierten Komponente namens Scheduler ab. Unter Windows XP hat der Scheduler versucht, alle CPU-Kerne im Round-Robin-Verfahren zu laden. Das Ausführen einer Single-Threaded-Task mit Volllast auf einer Quad-Core-CPU hätte also eine Auslastung von ~ 25% auf jedem Kern ergeben.
Leider hat sich dies für ein modernes CPU-Power-Management als schlecht erwiesen. Bei modernen Systemen ist es sogar von Vorteil, wenn ein einzelner Kern zu 100% ausgelastet ist, bevor der zweite Kern überhaupt involviert ist. Der Grund ist, dass die anderen Kerne im Tiefschlafmodus bleiben können, um Energie zu sparen und die Wärmeabgabe zu reduzieren, solange nicht genügend Last vorhanden ist, um einen Kern vollständig zu nutzen.

Für einige CPUs wie Intel Core i-Series und neuere AMD (Bulldozer) ist dies sogar noch interessanter, da die nicht verwendeten Kerne ausgeschaltet werden, wenn nur eine Teilmenge der Kerne verwendet wird. Dies reduziert den Stromverbrauch der CPU. Beide (Intel und AMD) beginnen, das Budget für Wärme und Stromverbrauch zu verwenden, um dann die aktiven Kerne zu übertakten. Dies kann Single-Thread-Anwendungen (die nicht auf mehrere Kerne verteilt werden können, um eine Aufgabe parallel zu bearbeiten) einen Schub verleihen. Wenn jedoch alle Kerne aktiv sind, haben die meisten dieser "Boost" -Technologien nur einen geringen Einfluss auf die Verarbeitungsleistung, da die Situation "Alle Kerne aktiv" genau die Situation ist, für die die CPU entwickelt wurde. Wenn Sie jedoch einige Kerne ausschalten, können die verbleibenden Kerne übertaktet werden, ohne dass der Chip heißer wird (oder mehr Strom verbraucht), als wenn alle Kerne aktiv sind.

Die Antwort lautet also, dass Ihr Core i7 die ungleiche Auslastung einzelner Kerne sehr gut bewältigt und sogar Single-Thread-Anwendungen einen Leistungsschub verleiht. Diese Steigerung liegt jedoch im Bereich einiger Prozent, während Multithread-Anwendungen, die die Last auf mehrere CPU-Kerne verteilen können, im optimalen Fall um Faktoren (x2 bei Dual-Core, 4x bei Quad-Core ...) erhöht werden können . Multi-Threading bietet also immer mehr Leistung in Bezug auf die kombinierte CPU-Leistung als Single-Threading in Kombination mit Clock-Boosting.

62
SkyBeam

Ich habe mich nicht mit den Handbüchern auf der VB -Site befasst, aber ich würde annehmen, dass das Zuweisen von Kernen zu einem Gastcomputer dem Gastbetriebssystem ermöglicht, mehrere Kerne zu sehen und somit Anwendungen zuzulassen, die diese nutzen können Zusätzliche Kerne erhöhen die Geschwindigkeit/Leistung/Effizienz, genau wie beim Host-Betriebssystem.

0
Xantec