Begrenzung der CPU-Geschwindigkeit in einer virtuellen Maschine?


29

Kennt jemand eine Möglichkeit, die CPU-Geschwindigkeit in einer virtuellen Maschine zu begrenzen? Oder gibt es überhaupt eine Virtualisierungssoftware, mit der Sie dies tun können?

Ich versuche, die Mindestanforderungen für ein System zu finden, wenn ich ein bestimmtes Betriebssystem-Image habe. Ich sehe Möglichkeiten, RAM und Festplattengröße sowie die Anzahl der Kerne zu begrenzen, aber ich muss die CPU auf 800 MHz verlangsamen, um die Systemkonfiguration wirklich zu simulieren. Außerdem handelt es sich bei dem Computer, auf dem die virtuelle Maschine ausgeführt wird, um eine Windows 7-Maschine.

Antworten:


21

Ich hatte das gleiche Problem und habe Oracle VirtualBox unter Windows 7 (als Host) und Ubuntu (als Gast) installiert. Ich verwendete einen eigenständigen Laptop, HP EliteBook 8540W mit Intel Core i7 mit 1,87 Gigahertz und 8 Gigabyte RAM.

Unter der Annahme, dass Ihre Installation ordnungsgemäß funktioniert, wählen Sie auf Ihrem Guest-Computer (z. B. in meinem Fall Ubuntu) im Hauptmenü unter "Computer" die Option "Einstellungen ..." aus. Wählen Sie "System" und klicken Sie auf die Registerkarte "Prozessor". Sie können die Taktrate (mit "Execution Cap" beschriftet) anpassen, indem Sie den Indikator auf der Leiste ganz nach unten auf 1 Prozent verschieben.

Ich bin davon ausgegangen, dass das Host-Betriebssystem (in meinem Fall Windows 7) keine Taktzyklen verbraucht hat (ich habe dies durch Überprüfen des "Task-Managers" bestätigt und in meinem Fall die CPU-Auslastung NULL auf dem Host-Computer festgestellt). Daher habe ich 100% "Ausführungsobergrenze" abgesaugt, die der Host-Maschine entspricht (z. B. 1,87 GigHZ). Wenn Sie einen Prozentsatz zwischen der Taktrate Ihres Hostcomputers und 800 MHz eingeben, können Sie den Prozentsatz ermitteln, der 800 MHz entspricht.

Ich hoffe das hilft.

Viel Glück.


9

Unter VMWare ESX und ESXi können Sie einen Ressourcenpool erstellen und die CPU-Ressourcen für diesen Pool begrenzen. Auf diese Weise können Sie die CPU-Geschwindigkeit aller in diesem Ressourcenpool erstellten Systeme begrenzen.


Ich habe über die Ressourcenpool-Option gelesen und dachte, dass sie auf den Spieler zutrifft. Leider ist das nicht der Fall. Und ESX / ESxi ist nicht kostenlos ... Aber ich könnte die Testversion ausprobieren und wenn es tatsächlich funktioniert, schauen Sie sich das noch einmal an.
RCC

6
ESXi ist kostenlos. (und noch ein paar Charaktere ...)
Tarnay Kálmán

"Ja wirklich?" Aus irgendeinem Grund glaubte ich nicht, dass es so war. Aber ich stehe korrigiert da! Vielen Dank für den Hinweis.
RCC


2

Ich bin zwar kein Experte für die verschiedenen Virtualisierungstechnologien, aber ich halte es für unwahrscheinlich, dass Sie eine solche Einstellung finden. Sie finden jedoch Einstellungen (zumindest in MS Hyper-V), mit denen Sie eine virtuelle Maschine auf einen Prozentsatz der gesamten Aktionen der Host-Maschinen beschränken können. Wenn Sie also einen 8-Kern-Host mit 2 GHz haben, können Sie versuchen, die virtuelle Client-Maschine auf einen Kern und nicht mehr als 45% des Kerns zu beschränken.

Dies wäre jedoch sehr grob und ungeeignet, wenn Sie Timing-Loops oder etwas testen möchten, bei dem die tatsächliche Prozessorgeschwindigkeit eine Rolle spielt.


Ich habe einige Programme gesehen, die das tun - nämlich den Prozentsatz der CPU-Auslastung pro Prozess begrenzen -, aber nur Linux-Optionen gesehen. Zugegeben, ich habe nicht viel in sie hineingeschaut. Wenn die in meiner Antwort auf MaxMackie beschriebene Lösung nicht funktioniert, werde ich diese Optionen weiter untersuchen.
RCC

Ja, dies könnte einen sehr schlechten Effekt auf Timing-Schleifen haben. Es hängt alles davon ab, ob es mit voller Geschwindigkeit bis zu 45% läuft und dann abschaltet oder ob es versucht, tatsächlich mit 45% zu laufen.
Zan Lynx

2

--cpuexecutioncap <1-100>: Diese Einstellung steuert, wie viel CPU-Zeit eine virtuelle CPU verwenden kann. Ein Wert von 50 impliziert, dass eine einzelne virtuelle CPU bis zu 50% einer einzelnen Host-CPU verwenden kann.


1
Weitere Informationen würden diese Antwort akzeptabel machen.
Ramhound

1

Ich kann bestätigen, dass dies in VirtualBox nicht unterstützt wird. Die Dokumentation scheint jedoch fraglich zu sein, ob VMware dazu in der Lage ist oder nicht.

BEARBEITEN: Für VMware: "Dies ist mit den Player- und Server-Produkten nicht möglich, aber ich glaube, es ist im ESXi (dem kostenlosen" Bare-Metal-Hypervisor "-Produkt) und den kostenpflichtigen Produkten wie VMWare Workstation."


Das kann ich auch bestätigen - ich habe alles auf VirtualBox eingerichtet und dann festgestellt, dass. Ich verwende derzeit VMware und habe versucht, die Datei config.ini so zu ändern, dass die host.cpukHz auf 800000 begrenzt wird. Dies scheint die virtuelle Maschine in die Irre zu führen, dass die CPU 800 MHz beträgt. Ich bin nicht sicher, ob dies tatsächlich das tut, was ich will es zu, aber das ist, was ich hoffe. Ideen?
RCC

Soweit ich das gesehen habe sollte das funktionieren. Stellen Sie einfach sicher, dass Sie host.noTSC = "TRUE" in derselben Konfigurationsdatei setzen. Dies reguliert die CPU-Uhr, um sicherzustellen, dass sie nicht langsamer wird. Rufen Sie im Gastbetriebssystem die Registerkarte Optionen auf und stellen Sie sicher, dass die Zeitsynchronisierung zwischen der virtuellen Maschine und dem Hostbetriebssystem ausgewählt ist.
Nr.

Ja, ich habe auch host.noTSc = "TRUE". Ich war nicht in der Lage zu finden, wo die Zeitsynchronisation zwischen dem VM und dem Host in VMware Player aktiviert werden kann ...
RCC

Ich bin mir ziemlich sicher, dass Sie auf dem Gastbetriebssystem laufen müssen
Nr.

1

Möglicherweise können Sie dies mit CPU-Pinning simulieren. Erstellen Sie dann einige CPU-gebundene Prozesse, die an dieselbe CPU gebunden sind. Die geschätzte CPU-Geschwindigkeit ist (tatsächliche CPU-Geschwindigkeit / Anzahl der Prozesse).

Mit einigen Ressourcenbegrenzungsprogrammen können Sie die Ressourcenprozentsätze begrenzen. Dies würde es einfacher machen, die CPU-Geschwindigkeit zu begrenzen. Dazu müssen Sie den Zugriff auf Ersatzressourcen deaktivieren.


0

In VirtualBOX gibt es einen Schieberegler, mit dem Sie den Prozentsatz der Host-CPU konfigurieren können, den die Gast-CPU verwenden kann. Dieser Prozentsatz gilt für jeden Kern.

In VirtualBOX gibt es keine Möglichkeit, einen Multi-Core mit unterschiedlichen Geschwindigkeiten für jeden Core zu simulieren, sondern nur einen Schieberegler für alle Cores.

Wenn Sie den Schieberegler auf 50% einstellen, werden Gast-Cores mit der Hälfte der Host-Cores ausgeführt (eine Grundeinstellung pro Core).

Wenn Sie also einen Deka-Kern (10 Kerne) auf dem Host und einen Tri-Kern auf dem Gast (drei) haben und möchten, dass der Gast mit X MHz ausgeführt wird, während der Host mit Y MHz ausgeführt wird, ignorieren Sie einfach die Anzahl der Kerne, um den Prozentsatz zu berechnen.

Die Formel wäre: Prozent = 100 * X / Y

Hoffe, das hilft auch anderen Menschen, die hier in die Zukunft kommen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.