2014-07-09 20:41:04 +0000 2014-07-09 20:41:04 +0000
30
30

Utilizzare la GPU NVidia da VirtualBox?

Come faccio a far usare al guest di VirtualBox la grafica NVidia?

Configurazione dell'host:

  • Windows 7 x64

  • NVidia Optimus

  • Nel Pannello di controllo NVIDIA, ho esplicitamente selezionato Processore NVIDIA ad alte prestazioni per:

  • Quando VirtualBox è in esecuzione, il software NVidia non lo elenca come applicazione che utilizza la GPU NVidia. Pertanto, presumo che VirtualBox effettivamente non utilizzi la GPU Nvidia.

Guest:

  • Windows 7 x64 (cioè lo stesso dell'host)

  • Guest Additions installato

  • accelerazione 3D abilitata nelle impostazioni di VirtualBox: Display / Video / Enable 3D Acceleration

  • Cosa riporta Rhinoceros , un'applicazione capace di OpenGL come adattatore video:

Risposte (2)

22
22
22
2019-01-18 20:23:51 +0000

Mi rendo conto che sono passati alcuni anni, ma volevo rispondere dato che questo post appare abbastanza in alto quando si cerca su Google “virtualbox 3d multiple GPU”. Nel tempo che è passato, le cose sono diventate molto più semplici e migliori.

Le persone che si imbattono in questo thread probabilmente arriveranno qui perché hanno un portatile o un PC che ha due GPU, che è abbastanza comune in questi giorni - specialmente nei portatili da gioco. La GPU Intel integrata è utilizzata per il rendering di finestre e applicazioni generali, ma le applicazioni che fanno uso di funzionalità 3D della GPU dovrebbero farlo tramite la più performante GPU Nvidia.

Oggi, stavo costruendo una VM di Ubuntu sul mio portatile per fare un po’ di sviluppo multipiattaforma, e tutto andava bene tranne che la VM ospite era estremamente lenta, e non c'era spiegazione per questo perché CPU, memoria, disco mostravano tutti un basso utilizzo.

Non ci è voluto molto per capire che erano le prestazioni video a causare il problema. Avviare le applicazioni, massimizzare/minimizzare le finestre - tutto ciò che diamo per scontato nel 2019 ma che ha bisogno dell'accelerazione 3D per funzionare a qualsiasi velocità ragionevole - stava usando la GPU 0.

È stato facile determinarlo perché Windows 10 ora ha la possibilità di vedere l'utilizzo della GPU usando “task manager”, poi la scheda “prestazioni”. E ho potuto vedere come ho spostato le finestre, massimizzato, minimizzato, che è stato fatto attraverso la GPU sull'host. Quella GPU sull'host è la GPU integrata Intel HD, e io volevo usare la NVidia GTX-1050ti, che era la GPU1.

Dopo aver cercato in giro non ho trovato da nessuna parte dove si potesse specificare quale GPU usare. Ma questo thread, e alcuni altri, mi hanno ricordato che su questo tipo di configurazioni si deve andare nel pannello di controllo NVidia, poi “gestire le impostazioni 3d”, poi la scheda “Program Settings”.

Probabilmente non troverete “Virtualbox” nella lista. Ma puoi premere il pulsante “Aggiungi” e aggiungere virtualbox.exe. Potresti dover forzare il drive/path dove si trova la tua installazione di virtualbox. Una volta che l'hai aggiunto, nelle impostazioni sottostanti assicurati che il punto 2. “Seleziona il processore grafico preferito per questo programma” sia impostato sulla GPU che vuoi che usi, che nel mio caso era “Processore NVIDIA ad alte prestazioni”.

Non impostarlo su auto, e certamente non impostarlo su integrato. Naturalmente, è necessario che le impostazioni della VM siano impostate con la casella dell'accelerazione 3D spuntata, e che le aggiunte del guest siano installate sull'host. Ma una volta che hai impostato le impostazioni video 3d dell'host come descritto sopra, spegni la VM ospite, esci da virtual box, e poi rilancia virtualbox e la VM.

Se usi task manager|performacne e guardi il processo “virtualbox manager” e guardi quale GPU viene usata quando navighi nella UI della VM ospite, dovresti vedere che ora usa la GPU migliore. Vedere l'immagine incollata qui sotto.

Tutto ciò detto, non aspettatevi di essere in grado di eseguire giochi in una VM ospite. Il passaggio dell'accelerazione 3D non è ancora così avanzato. Ma ci si può aspettare di avere un sistema operativo moderno e un'interfaccia utente nel guest, e avere un'esperienza accettabile. Si potrebbe essere in grado di giocare a giochi più vecchi nella VM ospite, come qualsiasi cosa basata su DirectX9. Sfortunatamente, man mano che la capacità di virtualizzare la GPU si evolve, la tecnologia di gioco 3d si evolve più velocemente.

17
17
17
2015-12-31 17:15:00 +0000

Dare al guest pieno accesso alla GPU probabilmente non è possibile. Se una macchina virtuale avesse accesso diretto alla vostra GPU mentre il vostro host la sta usando, accadrebbero brutte cose perché la condivisione della memoria tra due computer effettivamente diversi non è una cosa; puntatori e indirizzi e quant'altro sarebbero molto diversi tra loro. (Nessuna scheda disponibile per i consumatori supporta il servizio a due computer contemporaneamente).

Ci sono, comunque, alcune cose che potete provare. Primo, imposta il tuo processore grafico preferito su quello buono nel pannello di controllo NVidia (Impostazioni 3DGestisci impostazioni 3DProcessore grafico preferito). Questo potrebbe far andare VirtualBox con la scheda NVidia per OpenGL.

Se questo non aiuta, prova a installare Guest Additions in Safe Mode sul guest.

Infine, sugli host Linux, puoi provare a passare la GPU attraverso la macchina virtuale, ma questo funzionerà solo per le schede PCI e non sono stato in grado di scoprire se la tua è PCI, e anche così, hai buone probabilità di strappare la GPU dall'host o di causare altri problemi. Per prima cosa trovate l'indirizzo PCI (bus, dispositivo e funzione) della scheda buona. Imposta il chipset della tua VM su ICH9; questo non ha immediatamente rotto nulla quando l'ho provato. Poi usa l'utility VBoxManage per collegare la scheda:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Sostituisci Your VM Name come appropriato. BB è il numero di bus della tua GPU sull'host; DD è il dispositivo; F è la funzione. Dopo lo @, inserite lo slot PCI che sarà sul guest. Per esempio:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

In generale, il GPU passthrough è più probabile che sia possibile su un host Linux. Vedere Come configurare una macchina da gioco con GPU passthrough .