Wie kann ich eine langsame Maschine in einer VM simulieren?

29

Ich teste eine AJAX-schwere Webanwendung. Ich entwickle auf einem neuen Mac, benutze aber VmWare Fusion (derzeit 3.1.2) zum Testen in Windows XP und IETester zum Simulieren älterer Versionen des IE.

Auf diese Weise kann ich sehen, wie ältere IE-Versionen die Site rendern würden. Ich möchte jedoch auch sehen, wie die Site auf einem älteren Computer funktioniert. Ich sehe in den Einstellungen der VM, dass ich den RAM verringern kann; gibt es eine möglichkeit auch die prozessorgeschwindigkeit runter zu wählen? Wie könnte ich sonst eine langsame Maschine simulieren?

(Ich werde auch herausfinden, wie man eine langsame Internetverbindung simuliert .)

Nathan Long
quelle

Antworten:

17

Der Thread zur Begrenzung der CPU-Geschwindigkeit in einer virtuellen Maschine bietet einige Ratschläge:

  • 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.
  • Mit den Einstellungen in MS Hyper-V kann eine virtuelle Maschine auf einen Prozentsatz des gesamten Hosts beschränkt werden. 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.

Der Virtual PC Guy bemerkt in Verlangsamung virtueller Maschinen, dass:

Das Festlegen einer virtuellen Maschine mit maximal 10% CPU-Ressource unter Virtual Server (zum Beispiel) bedeutet, dass sie über einen bestimmten Zeitraum nur 10% der gesamten Systemzeitplanung auf der CPU ausführen darf. Während die virtuelle Maschine ausgeführt wird, läuft sie immer noch mit voller Prozessorgeschwindigkeit (wenn auch seltener als sonst).

Er schlägt vor, stattdessen Turbo zu verwenden, um die VM zu verlangsamen. Er schlägt auch die Verwendung von Emulationsprodukten vor, die viel langsamer sind als Virtualisierung, wie DOSBox und Bochs .

Harrymc
quelle
7

Sie können cpulimit verwenden , um die Ihrem Prozess zugewiesene Verarbeitungszeit zu begrenzen. Dies ist in den Repositories für die meisten Linux-Distributionen verfügbar.

Die Verwendung ist sehr einfach. Wenn Ihre VM beispielsweise als Prozess 12345 ausgeführt wird und Sie nur 5% der CPU-Zyklen zuweisen möchten, verwenden Sie die folgenden Optionen:

$ cpulimit -l 5 -p 12345
pfrenssen
quelle
4

Es ist wirklich nicht möglich, die Leistung einer älteren Maschine zuverlässig zu erreichen. Selbst wenn Sie die CPU - Auslastung und den Speicher zu drosseln verwalten Größe , wie werden Sie die FSB - Geschwindigkeit oder Speicher drosseln Geschwindigkeit ?

Sie können jedoch das Prozessmanagement-Tool eines Mac verwenden, um die CPU-Auslastung von VMWare Fusion selbst zu begrenzen. Wenn Sie dies gut genug tun, um einen älteren Computer zu emulieren, wird die gesamte VMWare-Anwendung wahrscheinlich sehr langsam ausgeführt - genau wie ein alter XP-fähiger Computer.

Ich weiß nicht , was die grafische Mac - Programm für das ist, aber sehen , ob Ihr Mac die unterstützt reniceBefehl: Öffnen Sie ein Terminal und geben Sieman renice , um zu wie es auf einem Mac funktioniert.

Übrigens: XP-fähige Maschinen sind derzeit wahrscheinlich spottbillig. Ein echter könnte wahrscheinlich für ~ 75 $ gehabt werden. Dann können Sie Ihre virtuelle Maschine auf eine echte übertragen ...

jpaugh
quelle
2
Ha! Interessante Idee, eine aktuelle Maschine zu kaufen. Da die ganze Idee darin besteht, einen alten Computer zu emulieren, ist der Kauf eines alten Computers eine ziemlich billige Option. :)
Nathan Long
2

Dies hängt wirklich davon ab, wie langsam eine Maschine ist, die Sie emulieren möchten. Wenn Sie XP auf 128 MB RAM zurücksetzen, wird es schmerzhaft langsam, bis zu dem Punkt, an dem ich nicht sicher bin, ob die Geschwindigkeit des virtuellen Prozessors wirklich relevant ist. Sie können Ihre VM-Dateien auch von einer alten externen USB1-Festplatte ausführen (prüfen Sie, ob ein Laufwerk mit 4200 U / min vorhanden ist). Das sollte die Dinge verlangsamen.

Kirche
quelle
2

Eine todsichere Möglichkeit, eine VM zu verlangsamen, besteht darin, so viele Klone wie möglich neben ihr hochzufahren!

Ihr Prozessor, FSB, RAM und alle anderen schnellen Komponenten Ihres Computers werden zwischen den anderen VMs aufgeteilt und aufgeteilt (sofern sie etwas Intensives tun - zum Beispiel einer der openGL-Bildschirmschoner), und Sie werden das Gefühl haben Sie sind wieder im Jahr 1990 ...

Haqa
quelle
Einfach und sehr effektiv.
Brötchen
1

Installieren Sie ein kleines Dienstprogramm in der Gast-XP-VM, um die CPU-Frequenz mithilfe der in XP integrierten dynamischen Frequenzumschaltung zu steuern. Zum Beispiel ein Dienstprogramm wie SpeedswitchXP . Ich habe so etwas noch nie selbst ausprobiert, und möglicherweise treten Probleme auf, wenn die virtuelle CPU, die VMWare für die Gast-VM bereitstellt, die dynamische Frequenzumschaltung nicht unterstützt.

queso
quelle
1
Ich befürchte, dass dies für eine VM, bei der die CPU nur emuliert wird, nur geringe Auswirkungen hat.
Harrymc
1
Ja, ich glaube nicht, dass ich die Frequenz ändere es eine Option ist, . es würde entweder nicht funktionieren (wahrscheinlich) oder den gesamten Host-Betriebssystem drosseln (unmöglich?).
Jpaugh
0

Ich würde die Idee haben, einen Endlosschleifen-Thread mit einem einstellbaren Schlafbefehl zu verwenden und die Prozesspriorität festzulegen. Wenn Sie möchten, dass ich einen kurzen Teil des C-Codes zusammensetze, lassen Sie es mich wissen.

RobotHumans
quelle