Ik realiseer me dat er een paar jaar voorbij zijn gegaan, maar ik wilde antwoorden omdat deze post vrij hoog opduikt als je googelt op “virtualbox 3d multiple GPU”. In de tijd die is verstreken, zijn de dingen een stuk eenvoudiger en beter geworden.
Mensen die op deze thread stuiten, komen hier waarschijnlijk terecht omdat ze een laptop of PC hebben met twee GPU’s, wat tegenwoordig heel gebruikelijk is – vooral op gaming laptops. De on-board Intel GPU wordt gebruikt voor het renderen van vensters en algemene toepassingen, maar toepassingen die gebruik maken van GPU 3D functionaliteit moeten dat doen via de beter presterende Nvidia GPU.
Vandaag was ik een Ubuntu VM aan het bouwen op mijn laptop om wat cross-platform ontwikkeling te doen, en alles ging goed behalve dat de gast VM extreem traag was, en er was geen verklaring voor omdat CPU, geheugen, schijf allemaal een laag gebruik vertoonden.
Het duurde niet lang om uit te vinden dat het de videoprestaties waren die het probleem veroorzaakten. Toepassingen starten, vensters maximaliseren/minimaliseren – alles wat we in 2019 als vanzelfsprekend beschouwen, maar 3D-versnelling nodig heeft om op redelijke snelheid te werken – gebruikte GPU 0.
Het was gemakkelijk om dit vast te stellen omdat Windows 10 nu de mogelijkheid heeft om GPU-gebruik te zien met behulp van “taakbeheer” en vervolgens het tabblad “prestaties”. En ik kon zien wanneer ik vensters verplaatste, maximaliseerde, minimaliseerde, dat werd gedaan door GPU op de host. Die GPU op de host is de geïntegreerde Intel HD GPU, en ik wilde de NVidia GTX-1050ti gebruiken, die GPU1 was.
Na wat rondzoeken vond ik niet echt ergens waar je kon specificeren welke GPU je wilde gebruiken. Maar deze draad, en sommige anderen, herinnerden me eraan dat je bij dit soort setups naar het NVidia configuratiescherm moet gaan, dan “3d instellingen beheren”, dan de “Programma instellingen” tab.
Je zult waarschijnlijk “Virtualbox” niet in de lijst vinden. Maar je kunt op de knop “Toevoegen” drukken, en virtualbox.exe toevoegen. Het kan zijn dat je moet boren naar de drive/path waar je virtualbox installatie staat. Als je het eenmaal hebt toegevoegd, zorg er dan in de instellingen voor dat item 2. “Selecteer de gewenste grafische processor voor dit programma” is ingesteld op de GPU die je wilt gebruiken, wat in mijn geval “HIgh-performance NVIDIA processor” was.
Zet het niet op automatisch, en zeker niet op geïntegreerd. Natuurlijk moet je de VM instellingen instellen met het 3D versnellingsvakje aangevinkt, en je moet de gasttoevoegingen op de host geïnstalleerd hebben. Maar als je eenmaal de host video 3D instellingen hebt ingesteld zoals hierboven beschreven, sluit dan de gast VM af, sluit virtualbox af, en start virtualbox en de VM opnieuw.
Als je task manager|performacne gebruikt en kijkt naar het “virtualbox manager” proces en kijkt welke GPU wordt gebruikt wanneer je door de UI van de guest VM navigeert, zou je moeten zien dat het nu de betere GPU gebruikt. Zie de afbeelding hieronder geplakt.
Dat gezegd hebbende, verwacht niet dat je games kunt draaien in een gast-VM. 3D versnelling is nog niet zo ver gevorderd. Maar je kunt verwachten dat je een modern OS en UI in je gast hebt, en een acceptabele ervaring. Men zou in staat zijn om oudere spellen te spelen in de gast-VM, zoals alles gebaseerd op DirectX9. Helaas, als de mogelijkheid om GPU’s te virtualiseren evolueert, evolueert de 3D gaming technologie sneller.