Come ridurre l'utilizzo della CPU quando si esegue Virtual Box?


12

Sto affrontando un problema con l'utilizzo della CPU al 100% nel mio sistema quando eseguo VirtualBox. Ecco alcuni ulteriori dettagli:

Le mie informazioni di sistema:

Nome CPU 1: Intel (R) Pentium (R) Dual CPU T2310 @ 1.46GHz
Dimensione cache livello 1 CPU 1: 32K cache dati. Cache istruzioni 32K.

Dimensione cache CPU 1 livello 2: 1024 KB di cache unificata.
Mips CPU 1: 2926.20 Nome
CPU 2: Intel (R) Pentium (R) Dual CPU T2310 @ 1.46GHz
Dimensione cache livello 2 CPU 2: 32K Cache dati. Cache istruzioni 32K.

Dimensione cache livello 2 CPU 2: 1024 KB di cache unificata.

CPU 2 Mips: 2925.96
CPU a 64 bit? Sì!
Memoria totale: 2,0 GB
Swap totale: 6141 MBytes


Informazioni sul mio sistema operativo:

Versione del sistema operativo Kubuntu: 11.04
Versione del kernel: 2.6.38-8-generico
Arco del kernel: i686
Shell predefinita: / bin / bash


My Virtual Box Settings:

Tipo di sistema operativo: Windows XP
Memoria video: 32 MB
Accelerazione:
memoria di base 3D : 512 MB

I dettagli del problema:

Bene, ogni volta che eseguo Windows XP dal mio VirtualBox, vedo l'utilizzo della CPU quasi al 100%. Provo un sistema lento anche se nessun programma era in esecuzione sulla mia versione di Windows XP ospitata.

Mi chiedevo se potessi giocare con le impostazioni in modo da migliorare leggermente le prestazioni. Il mio PC è relativamente veloce con il mio sistema operativo Linux. Devo sapere se ci sono alcuni suggerimenti che posso seguire durante la configurazione delle impostazioni del mio VirtualBox in modo da poter ottenere risultati migliori.

Eventuali suggerimenti / idee sono molto apprezzati!


Quindi vuoi dire che la tua macchina virtuale sta funzionando lentamente o il tuo sistema del tutto? La CPU che hai è piuttosto debole - quindi non mi chiedo se arriva al 100% quando esegui VM.
Slhck,

La CPU è lenta, ma ho eseguito XP sull'host SUSE su Athlon XP 2800+ senza problemi e 2 GIB di RAM, e questo sistema è molte volte più veloce del mio. Dovrebbe essere in grado di eseguire VirtualBox e XP in folle senza problemi. Inoltre +1 per un bel elenco di specifiche del computer rilevanti.
Andreja Ko

Ho riscontrato lo stesso problema con diversi sistemi operativi sullo stesso computer. In precedenza, ho usato Linux Mint, Ubuntu, Slax, Fedora e tutto ciò mi sembrava di affrontare problemi simili con l'utilizzo della CPU. Tuttavia, credo che se posso "correttamente" modificare le impostazioni della mia macchina virtuale, "potrei" essere in grado di migliorare un po 'le prestazioni.
CompilazioneCyborg,

La soluzione temporanea che sto utilizzando al momento è un ciclo infinito che esegue un comando bash per liberare pagecache, dentries e inode ogni 10 secondi. La mia VM è stata in grado di respirare un po 'dopo aver pensato di usare questa tecnica bizzarra anche se non è un modo corretto di farlo, ma piuttosto un "hack".
CompilazioneCyborg,

1
Purtroppo il T2310 manca di estensioni di virtualizzazione VT-x ( ark.intel.com/Product.aspx?id=32431 ) e di conseguenza Virtualbox utilizzerà il software per catturare tutte le chiamate cpu ad alto privilegio che l'ospite farà, ciò significa che che Virtualbox stesso utilizzerà più potenza della CPU per soddisfare il SO guest. Inoltre sarei curioso di vedere se dare al SO guest 1 GB di RAM potrebbe aiutarlo a rimanere inattivo meglio perché non dovrà fare spesso errori di pagina costosi da host Virtualbox ...
Mokubai

Risposte:


5

Elaborando il mio commento sopra il T2310 manca di estensioni di virtualizzazione (VT-x) come da scheda tecnica della CPU all'indirizzo http://ark.intel.com/Product.aspx?id=32431

Da questo articolo di Wikipedia , ci sono tre cose di base che causeranno un degrado misurabile delle prestazioni della VM (e quindi un aumento dell'utilizzo della CPU sull'host:

  • La traduzione binaria viene utilizzata per riscrivere determinate istruzioni, come POPF, che altrimenti fallirebbero in modo silenzioso o si comporterebbero diversamente se eseguite sopra l'anello 0 rendendo impossibile la classica virtualizzazione trappola ed emula. Per migliorare le prestazioni, i blocchi di base tradotti devono essere memorizzati nella cache in modo coerente che rilevi il patching del codice (utilizzato ad esempio nei VxD), il riutilizzo delle pagine da parte del sistema operativo guest o persino il codice di auto-modifica.

  • Numerose strutture di dati chiave utilizzate da un processore devono essere ombreggiate. Poiché la maggior parte dei sistemi operativi utilizza la memoria virtuale paginata e concedere al SO guest l'accesso diretto alla MMU significherebbe la perdita di controllo da parte del gestore della virtualizzazione, parte del lavoro della MMU x86 deve essere duplicato nel software per il SO guest usando una tecnica noto come tabelle delle pagine shadow. Ciò implica negare al SO guest qualsiasi accesso alle voci effettive della tabella delle pagine bloccando i tentativi di accesso ed emulandoli invece nel software.

  • Emulazione dispositivo I / O: i dispositivi non supportati sul sistema operativo guest devono essere emulati da un emulatore del dispositivo in esecuzione nel sistema operativo host.

Un sistema operativo guest ha un grande ascolto per le operazioni che richiedono l'uso di istruzioni privilegiate richieste e in genere questi costi generali sono fortemente mitigati dall'uso delle estensioni di virtualizzazione AMD-V di Intels VT-x e AMD. Il tuo processore non ha queste estensioni e quindi tutto il lavoro di acquisizione ed emulazione causerà una perdita di prestazioni.

Le mie raccomandazioni sarebbero:

  • Per fornire alla macchina virtuale tutta la memoria necessaria per ridurre al minimo la quantità di paging da eseguire, forse 1 GB o più a seconda dei carichi di lavoro.

  • Disabilita l'accelerazione 3D poiché potrebbe essere necessario trasferire tutte le chiamate al driver 3D attraverso il livello di emulazione e quindi potrebbe essere costoso per il tuo processore.

  • Installa Virtualbox Guest Additions per il tuo sistema operativo guest in quanto utilizzeranno i driver che supportano meglio l'ambiente virtuale.

  • Riduci la risoluzione dello schermo e le opzioni grafiche nel tuo sistema operativo guest.

  • Mantenere l'accesso alla rete (Internet) a un livello ragionevole, le macchine virtuali fortemente legate alla rete sono costose anche con VT-x e beneficiano anche di VT-d (Virtualization Technology for Directed I / O), che non è supportato dal processore.


2

La mia risposta è legata solo al titolo della domanda, non ad altro testo della domanda. La mia enfasi è sull'utilizzo della CPU inattiva con più guest virtuali: (sufficiente memoria libera sull'host).

L'utilizzo della CPU causato dal audiodg.exeprocesso sull'host Windows durante l'esecuzione di VirtualBox è superiore al carico del guest inattivo stesso. Può essere facilmente ridotto o completamente eliminato disabilitando la casella di controllo Audio nelle impostazioni guest di Virtualbox nella scheda Audio. (Può essere disabilitato solo su una macchina virt. Chiusa.)

Il processo audiodg.exe consuma circa il 5% di CPU per un ospite, ma è un carico importante su un laptop durante le tipiche attività inattive come l'editing dei sorgenti e ha un grande impatto sulla frequenza della CPU (diminuisce dall'80% al 40%), velocità della ventola e durata della batteria sul laptop. Molte delle mie macchine virtuali in esecuzione di solito non hanno bisogno del suono o solo a volte. (La disabilitazione dell'audio nel sistema operativo guest non ha avuto alcun effetto, né la pausa della macchina virtuale, ma le impostazioni del guest virtualbox sono importanti.)

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.