Wie kann ich Turbo auf meinem Prozessor manuell aktivieren, wenn Windows (Server 2008 R2) als VM ausgeführt wird?

2546
mpax

Eine von mir ausgeführte Anwendung hängt stark von der Geschwindigkeit des Rohprozessors ab, im Gegensatz zur Verwendung mehrerer Kerne. Die Prozessoren in meinem VM-Host verfügen über eine Basis von 2,9 und können bis zu 3,3 Turbo haben, es scheint jedoch, dass Windows eine bedingte Anweisung hat, die besagt: "Wenn ich in einer virtuellen Umgebung laufe, verbiete die manuelle Turbo-Steuerung.

Und um es wieder zurückzubringen, da meine Anwendung nicht auf mehrere Kerne fokussiert ist, wird ein automatischer Auslöser des Turbos nie ausgeführt, da nur ein oder zwei Kerne den starken Gebrauch "sehen"; Aus Sicht des Prozessors hat er noch viel Headroom und muss nicht einmal an Turbo denken.

2

1 Antwort auf die Frage

1
qasdfdsaq

1. Turbo Boost

Bei Intel-CPUs hat Turbo nur zwei Einstellungen: "Auto" und "Off". Im Auto-Modus entscheidet der Prozessor selbst, ob ein Turbo ausgeführt werden soll, wenn seine internen Regeln festlegen, dass genügend Kopfraum vorhanden ist. Turbo ist grundsätzlich immer auf "Auto" gesetzt, wenn es im BIOS aktiviert ist, bis es von irgendetwas ausgeschaltet wird.

Abgesehen von übertakteten Prozessoren können Sie niemals "den Turbo manuell einschalten". Der Prozessor selbst hat vollständige und ausschließliche Kontrolle über die Turbo-Modi und kann vom Betriebssystem nicht überschrieben werden. Alles, was ein Betriebssystem tun kann, ist dem Prozessor mitzuteilen, wann er keinen Turbo benötigt.

Im Normalbetrieb teilt Ihr Prozessor dem Betriebssystem mit, welche Geschwindigkeiten er erreichen kann, und diese Geschwindigkeitsliste geht nur bis zur maximalen Nicht-Turbogeschwindigkeit. Das Betriebssystem kann aus dieser Liste eine beliebige Geschwindigkeit oder gar keine Geschwindigkeit anfordern. Ihr Betriebssystem schaltet den Turbo immer dann aus, wenn vom Prozessor eine Geschwindigkeit angefordert wird, die unter der maximalen Nicht-Turbo-Geschwindigkeit liegt. Der Turbo wird immer dann wieder auf "Auto" geschaltet, wenn das Betriebssystem die maximale Geschwindigkeit aus der angegebenen Liste anfordert.

2. VM-Steuerung

Windows kann die Geschwindigkeit der Host-CPU nicht von einer VM aus steuern. Dies ist beabsichtigt. Das Host-Betriebssystem sollte über ein eigenes CPU-Geschwindigkeitssteuerungssystem verfügen, das die Last automatisch erkennt und niedrigere CPU-Geschwindigkeiten anfordert, wenn es nicht benötigt wird. Damit das Gastbetriebssystem die CPU des Hosts steuern kann, muss die Hardware-Kontrolle der CPU (MSR) durchlaufen werden. Dies stellt nicht nur ein großes Sicherheitsrisiko dar, sondern beseitigt den Punkt der Virtualisierung überhaupt.

3. Mehrere Kerne

Ihr Verständnis scheint das Gegenteil davon zu sein, wie Turbo arbeiten soll. Der Turbo-Boost erhöht in erster Linie die Geschwindigkeit , wenn ein oder zwei Kerne stark beansprucht werden, und ist am wenigsten effektiv, wenn mehrere Kerne geladen werden. Der Prozessor wird nur dann mit Turbo arbeiten, wenn er über genügend Headroom verfügt.

Vielleicht hätte ich dies eher als "manuelle Kontrolle" bezeichnen sollen. Aus der Linux-Perspektive kann man den C-Status einiger Kerne ändern, um sie in den Schlaf / Tiefschlaf zu versetzen, wodurch die verbleibenden Kerne in den Turbo-Bereich gehen können (Anpassung des p-Status auch beim Spielen). Wie wäre es also mit der manuellen Steuerung des C- und P-Status in Win Server 2008 R2 als VM? Oh, und ja, ich stimme zu, dass dies Passthrough bedeutet, das nicht dem Standard entspricht / für ein VM-Setup weniger ideal ist - ach was wir für die Anwendungen tun, mit denen wir arbeiten;) mpax vor 8 Jahren 0
@mpax: Wie bereits erwähnt, wird dies vollständig vom Betriebssystem ** Host ** gesteuert und kann nicht von der VM ausgeführt werden. AFAIK, Passthrough ist einfach nicht möglich (auch nicht mit "schmutzigen Hacks"). Ich glaube nicht, dass C-States für Turbo-Boost mehr nötig sind, da die CPU jetzt ihre internen TDP-Messungen verwendet. qasdfdsaq vor 8 Jahren 2