Me doy cuenta de que han pasado algunos años, pero quería responder ya que este post aparece bastante alto cuando se busca en Google “virtualbox 3d multiple GPU”. En el tiempo que ha pasado, las cosas se han vuelto mucho más simples y mejores.
La gente que se tropieza con este hilo probablemente aterrizará aquí porque tiene un portátil o PC que tiene dos GPU, lo cual es bastante común hoy en día - especialmente en los portátiles para juegos. La GPU Intel integrada se utiliza para el renderizado de ventanas y aplicaciones generales, pero las aplicaciones que hacen uso de la funcionalidad 3D de la GPU deben hacerlo a través de la GPU Nvidia de mayor rendimiento.
Hoy, estaba construyendo una VM de Ubuntu en mi portátil para hacer algo de desarrollo multiplataforma, y todo iba bien excepto que la VM invitada era extremadamente lenta, y no había explicación para ello porque la CPU, la memoria y el disco mostraban una baja utilización.
No tardé en descubrir que era el rendimiento del vídeo lo que estaba causando el problema. Lanzar aplicaciones, maximizar/minimizar ventanas -cualquier cosa que demos por sentado en 2019 pero que necesite aceleración 3D para funcionar a una velocidad razonable- estaba usando la GPU 0.
Fue fácil determinar esto porque Windows 10 ahora tiene la capacidad de ver la utilización de la GPU usando el “administrador de tareas”, y luego la pestaña “rendimiento”. Y pude ver como movía las ventanas, maximizaba, minimizaba, que se estaba haciendo a través de la GPU en el host. Esa GPU en el host es la GPU Intel HD integrada, y yo quería utilizar la NVidia GTX-1050ti, que era la GPU1.
Después de buscar por ahí no encontré ningún sitio donde se pudiera especificar qué GPU usar. Pero este hilo, y algunos otros, me han recordado que en este tipo de configuraciones hay que entrar en el panel de control de NVidia, luego en “manage 3d settings”, y después en la pestaña “Program Settings”.
Probablemente no encontrarás “Virtualbox” en la lista. Pero puedes pulsar el botón “Añadir”, y añadir virtualbox.exe. Puede que tengas que buscar la unidad/ruta donde está tu instalación de virtualbox. Una vez que lo hayas añadido, en la configuración de abajo asegúrate de que el punto 2. “Seleccionar el procesador gráfico preferido para este programa” esté ajustado a la GPU que quieres que utilice, que en mi caso fue “Procesador NVIDIA de alto rendimiento”.
No lo pongas en automático, y desde luego no lo pongas en integrado. Por supuesto, necesitas la configuración de la VM con la casilla de aceleración 3D marcada, y necesitas las adiciones del huésped instaladas en el host. Pero una vez que hayas configurado la configuración de video 3d del host como se describe arriba, apaga la VM huésped, sal de virtualbox, y luego vuelve a lanzar virtualbox y la VM.
Si utilizas el administrador de tareas|performacne y miras el proceso “virtualbox manager” y observas qué GPU se utiliza cuando navegas por la UI de la VM invitada, deberías ver que ahora utiliza la mejor GPU. Vea la imagen pegada abajo.
Dicho esto, no esperes poder ejecutar juegos en una VM invitada. El paso de la aceleración 3D todavía no está tan avanzado. Pero puedes esperar tener un sistema operativo y una interfaz de usuario modernos en tu invitado, y tener una experiencia aceptable. Uno sería capaz de jugar a juegos más antiguos en la VM invitada, como cualquier cosa basada en directX9. Desafortunadamente, a medida que la capacidad de virtualizar la GPU evoluciona, la tecnología de juegos 3D evoluciona más rápido.