Come posso simulare una macchina lenta in una macchina virtuale?


29

Sto testando un'applicazione Web pesante AJAX. Sviluppo su un nuovo Mac, ma utilizzo VmWare Fusion (attualmente 3.1.2) per testare in Windows XP, utilizzando IETester per simulare versioni precedenti di IE.

Questo mi permette di vedere come le versioni precedenti di IE renderebbero il sito, ma mi piacerebbe anche vedere come il sito avrebbe prestazioni su un computer più vecchio. Vedo nelle impostazioni della VM che posso ridurre la RAM; c'è un modo per abbassare anche la velocità del processore? In quale altro modo potrei simulare una macchina lenta?

(Vado anche a vedere come simulare una connessione Internet lenta .)

Risposte:


17

Il thread che limita la velocità della CPU in una macchina virtuale offre alcuni consigli:

  • Su VMWare ESX ed ESXi è possibile creare un pool di risorse e limitare le risorse CPU per quel pool. Ciò consentirebbe di limitare la velocità della CPU di tutti i sistemi creati in quel pool di risorse.
  • Le impostazioni in MS hyper-V consentono di limitare una macchina virtuale a una percentuale dell'host complessivo. Quindi, se si dispone di un host a 8 core in esecuzione a 2 GHz, è possibile provare a limitare la macchina virtuale client a un core e non più del 45% del core.

Il Virtual PC Guy osserva in Rallentamento delle macchine virtuali che:

l'impostazione di una macchina virtuale con un massimo del 10% di risorse CPU in Virtual Server (ad esempio) significa che potrà essere eseguito sulla CPU solo per il 10% del tempo di pianificazione totale del sistema per un periodo di tempo. Mentre la macchina virtuale è in esecuzione, è ancora in esecuzione alla massima velocità del processore (anche se meno spesso di quanto non funzionerebbe altrimenti).

Suggerisce invece di utilizzare Turbo per rallentare la VM. Suggerisce inoltre di utilizzare prodotti di emulazione, che sono molto più lenti della virtualizzazione, come DOSBox e Bochs .


7

È possibile utilizzare cpulimit per limitare la quantità di tempo di elaborazione assegnata al processo. Questo è disponibile nei repository per la maggior parte delle distribuzioni di Linux.

L'utilizzo è molto semplice, se ad esempio la VM è in esecuzione come processo 12345 e si desidera allocare solo il 5% dei cicli della CPU, utilizzare le seguenti opzioni:

$ cpulimit -l 5 -p 12345

4

Non è davvero possibile abbinare in modo affidabile le prestazioni di una macchina più vecchia. Anche se riesci a limitare l'utilizzo della CPU e la dimensione della memoria , come farai a limitare la velocità dell'FSB o la velocità della memoria ?

Detto questo, è possibile utilizzare lo strumento di gestione dei processi di un Mac per limitare l'utilizzo della CPU di VMWare Fusion stesso. Se lo fai abbastanza bene per emulare una macchina più vecchia, probabilmente l'intera applicazione VMWare funzionerà molto lentamente, proprio come una macchina pronta per XP vintage.

Non so quale sia il programma grafico Mac per questo, ma vedi se il tuo Mac supporta il renicecomando: Apri un terminale e digita man reniceper leggere su come funziona su un Mac.

A proposito, le macchine predisposte per XP sono probabilmente lo sporco a buon mercato in questo momento. Probabilmente ne avremmo avuto uno vero per ~ $ 75. Quindi, puoi trasferire la tua macchina virtuale su una vera ...


2
Ha! Interessante idea di acquistare una macchina reale. Poiché l'idea è di emulare un vecchio computer, l'acquisto di un vecchio computer è un'opzione piuttosto economica. :)
Nathan Long,

2

Questo dipende davvero dalla lentezza di una macchina che si desidera emulare. Se ripristini XP a 128 MB di RAM, sarà dolorosamente lento, al punto in cui non sono sicuro che la velocità del processore virtuale sarà davvero rilevante. È inoltre possibile eseguire i file VM da un vecchio disco rigido esterno USB1 (vedere se è possibile trovare un'unità da 4200 RPM). Ciò dovrebbe rallentare le cose.


2

Un modo infallibile per rallentare una macchina virtuale è avviare quanti più cloni possibile al suo fianco!

Il tuo processore, FSB, RAM e tutti gli altri componenti veloci della tua macchina verranno suddivisi e tagliati a cubetti tra le altre macchine virtuali (a condizione che tu faccia qualcosa di intensivo, ad esempio uno degli screensaver openGL) e ti sentirai come sei di nuovo nel 1990 ...


Semplice e abbastanza efficace.
lancia l'

1

Installa una piccola utility nella VM guest XP per controllare la frequenza della CPU utilizzando la commutazione dinamica della frequenza integrata di XP. Ad esempio, un'utilità come SpeedswitchXP . Non ho mai provato qualcosa di simile da solo, e potrebbero esserci problemi potenzialmente se la CPU virtuale che VMWare presenta alla VM guest non supporta il cambio dinamico di frequenza.


1
Temo che ciò avrà scarso effetto per una VM, in cui la CPU viene solo emulata.
harrymc,

1
Sì, non penso che cambiare la frequenza sia un'opzione; o non funzionerebbe (probabilmente) o limiterebbe l'intero sistema operativo host (impossibile?).
jpaugh,

0

Vorrei intrattenere l'idea di utilizzare un thread loop infinito con un comando sleep sintonizzabile e impostare la priorità del processo. Se vuoi che io schiaffeggi un pezzo veloce di codice C fammi sapere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.