Limitare la velocità della CPU in una macchina virtuale?


29

Qualcuno sa come limitare la velocità della CPU in una macchina virtuale? O se esiste anche un software di virtualizzazione che ti consente di farlo?

Sto cercando di trovare i requisiti minimi per un sistema, data un'immagine specifica del mio sistema operativo. Vedo modi per limitare la dimensione della RAM e del disco rigido e il numero di core, ma devo rallentare la CPU a 800 MHz per simulare davvero la configurazione del sistema. Inoltre, il computer che esegue la macchina virtuale è una macchina Windows 7.

Risposte:


21

Mi è stato assegnato lo stesso problema e ho installato Oracle VirtualBox su Windows 7 (come host) e Ubuntu (come guest). Ho usato un laptop standalone, HP EliteBook 8540W con Intl Core i7 a 1,87 GigHZ e 8Gig RAM.

Supponendo che l'installazione funzioni correttamente, sulla tua macchina Ospite (ad esempio nel mio caso Ubuntu) seleziona "Impostazioni ..." da "Macchina" nel menu principale; selezionare "Sistema" e fare clic sulla scheda "Processore". È possibile regolare la velocità di clock (etichettata "Execution Cap") facendo scorrere l'indicatore sulla barra fino all'1 percento.

Supponevo che il sistema operativo host (Windows 7 nel mio caso) non consumasse alcun ciclo di clock (l'ho confermato controllando il "Task Manager" e ho trovato l'utilizzo della CPU ZERO sul computer host. Windows 7 nel mio caso). Pertanto, ho aspirato il "tappo di esecuzione" al 100% uguale a quello della macchina host (ad es. 1,87 GigHZ). Penso che prendendo una percentuale tra la velocità di clock della tua macchina host e 800 MHZ, sei in grado di capire il valore percentuale che corrisponde a 800 MHZ.

Spero che aiuti.

Buona fortuna.


9

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.


Ho letto dell'opzione pool di risorse e ho pensato che fosse applicabile al giocatore. Purtroppo, non è così. E ESX / ESxi non sono gratuiti ... Ma potrei provare la versione di prova e se funziona davvero, approfondire ancora.
RCC

6
ESXi è gratuito. (e pochi altri personaggi ...)
Tarnay Kálmán,

Veramente? Per qualche ragione non pensavo che lo fosse. Ma sono corretto! Grazie mille per averlo sottolineato.
RCC


2

Sebbene non sia un esperto di tutte le diverse tecnologie di virtualizzazione, penso che sia improbabile che tu possa trovare tale impostazione. Tuttavia, troverai impostazioni (almeno in MS hyper-V) che ti consentono di limitare una macchina virtuale a una percentuale delle azioni complessive delle macchine host. 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.

Tuttavia, questo sarebbe molto grezzo e non adatto se stai provando a testare i loop di temporizzazione o qualcosa in cui entra in gioco la velocità effettiva del processore.


Ho visto un paio di programmi che lo fanno - vale a dire limitare la percentuale di utilizzo della CPU per processo - ma ho visto solo opzioni Linux. Certo, non li ho esaminati molto. Se la soluzione che sto provando come descritto nella mia risposta a MaxMackie non funziona, esaminerò ulteriormente queste opzioni.
RCC

Sì, questo potrebbe avere un effetto molto negativo sui circuiti di temporizzazione. Dipende tutto se funziona alla massima velocità fino al 45%, quindi si interrompe, o se tenta di funzionare effettivamente al 45%.
Zan Lynx,

2

--cpuexecutioncap <1-100>: questa impostazione controlla quanto tempo della CPU può usare una CPU virtuale. Un valore di 50 implica che una singola CPU virtuale può utilizzare fino al 50% di una singola CPU host.


1
Maggiori informazioni renderebbero accettabile questa risposta.
Ramhound,

1

Posso confermare che questo non è supportato in VirtualBox. Tuttavia, la documentazione sembra essere incerta sul fatto che VMware sia in grado di farlo.

EDIT: Per VMware: "Questo non è possibile con i prodotti Player e Server, ma credo che sia in ESXi (il prodotto" hypervisor bare-metal "gratuito) e nei prodotti a pagamento come VMWare Workstation."


Posso confermare anche questo: ho impostato tutto su VirtualBox e poi l'ho scoperto. Attualmente sto usando VMware e ho provato a modificare il file config.ini per limitare host.cpukHz a 800000. Questo sembra falsificare la macchina virtuale nel pensare che la CPU MHz sia 800. Non sono sicuro che questo farà effettivamente quello che voglio a, ma è quello che spero. Idee?
RCC

Da quello che ho visto, dovrebbe funzionare. Assicurati solo di impostare host.noTSC = "TRUE" nello stesso file di configurazione. Questo regola l'orologio della CPU per assicurarsi che non rallenti. Inoltre, nel sistema operativo guest, vai alla scheda Opzioni e assicurati che sia selezionata la sincronizzazione dell'ora tra la macchina virtuale e il sistema operativo host.
n0pe

Sì, ho anche host.noTSc = "TRUE". Tuttavia, non sono stato in grado di trovare dove abilitare la sincronizzazione temporale tra vm e host nel lettore vmware ...
RCC

Sono abbastanza sicuro che devi essere in esecuzione nel SO guest
n0pe

1

Potresti essere in grado di simularlo con il pin della CPU. Quindi creare alcuni processi associati alla CPU bloccati sulla stessa CPU. La velocità della CPU stimata è (Velocità della CPU reale / N. di processi).

Alcuni software di limitazione delle risorse ti permetteranno di limitare le percentuali delle risorse. Ciò renderebbe più semplice limitare la velocità della CPU. Per fare ciò è necessario disabilitare l'accesso alle risorse di riserva.


0

Su VirtualBOX è presente un dispositivo di scorrimento in cui è possibile configurare la% di CPU host che la CPU guest può utilizzare. Tale percentuale si applica a ciascun nucleo.

Su VirtualBOX non è possibile simulare un multi-core con velocità diverse su ciascun core, un solo dispositivo di scorrimento per tutti i core.

Se si imposta il dispositivo di scorrimento su 50%, i core guest verranno eseguiti su 1/2 dei core host (una base per core).

Quindi, se si dispone di un deca core (10 core) sull'host e un tri core sull'host (tre) e si desidera che il guest funzioni a X MHz mentre l'host funziona a Y MHz, ignorare semplicemente il numero di core per calcolare la percentuale.

La formula sarebbe: percentuale = 100 * X / Y

Spero che questo aiuti anche altre persone che verranno qui in futuro.

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.