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

¿Utilizar la GPU NVidia desde VirtualBox?

¿Cómo puedo hacer que el invitado de VirtualBox utilice la gráfica NVidia?

Configuración del host:

  • Windows 7 x64

  • NVidia Optimus

  • En el Panel de control de NVIDIA, he seleccionado explícitamente Procesador NVIDIA de alto rendimiento para:

  • Cuando VirtualBox se está ejecutando, el software de NVidia no lo lista como aplicación que utiliza la GPU de NVidia. Por lo tanto, asumo que VirtualBox efectivamente no utiliza la GPU Nvidia.

Guest:

  • Windows 7 x64 (es decir, igual que el host)

  • Guest Additions instalado

  • Aceleración 3D activada en la configuración de VirtualBox: Display / Video / Enable 3D Acceleration

  • Lo que Rhinoceros , una aplicación capaz de OpenGL informa como adaptador de vídeo:

Respuestas (2)

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

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.

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

Dar al invitado acceso total a la GPU probablemente no es posible. Si una máquina virtual tuviera acceso directo a su GPU mientras su anfitrión la está utilizando, sucederían cosas malasTM porque compartir la memoria entre dos ordenadores efectivamente diferentes no es una cosa; los punteros y las direcciones y demás serían muy diferentes entre ellos. (Ninguna tarjeta disponible para el consumidor permite dar servicio a dos ordenadores a la vez).

Hay, sin embargo, algunas cosas que puedes probar. En primer lugar, configura tu procesador gráfico preferido como el bueno en el Panel de Control de NVidia (Configuración 3DGestión de la configuración 3DProcesador gráfico preferido). Eso puede hacer que VirtualBox vaya con la tarjeta NVidia para OpenGL.

Si eso no ayuda, prueba a instalar Guest Additions en Modo Seguro en el huésped.

Finalmente, en hosts Linux, puedes intentar pasar la GPU a la máquina virtual, pero esto sólo funcionará para tarjetas PCI y no he podido averiguar si la tuya es PCI, y aun así, tienes muchas posibilidades de arrancar la GPU del host o causar otros problemas. Primero encuentra la dirección PCI (bus, dispositivo y función) de la tarjeta buena. Ajusta el chipset de tu VM a ICH9; esto no rompió nada inmediatamente cuando lo probé. Luego usa la utilidad VBoxManage para conectar la tarjeta:

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

Reemplaza Your VM Name según corresponda. BB es el número de bus de tu GPU en el host; DD es el dispositivo; F es la función. Después del @, introduce la ranura PCI en la que estará en el huésped. Por ejemplo:

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

En general, el passthrough de la GPU es más probable que sea posible en un host Linux. Ver Cómo configurar una máquina de juegos con GPU passthrough .