El paso de una GPU física a una máquina virtual permite que el sistema invitado acceda directamente a la tarjeta gráfica, sin depender de una GPU virtualizada convencional. En entornos basados en Oracle Linux KVM y Oracle Linux Virtualization Manager (OLVM), esta configuración puede resultar útil para cargas de inteligencia artificial (IA), aprendizaje automático (ML), renderizado 3D, diseño asistido por ordenador (CAD), infraestructura de escritorios virtuales (VDI) y aplicaciones gráficas exigentes.
Las claves del GPU passthrough en Oracle Linux en 20 segundos
- La técnica asigna una GPU física a una máquina virtual para que pueda utilizar sus recursos directamente.
- Requiere virtualización por hardware, IOMMU habilitado y una GPU dedicada que no utilice el anfitrión.
- VFIO permite aislar y asignar el dispositivo PCI a la máquina virtual.
- OLVM gestiona la incorporación del anfitrión y la asignación de la GPU desde su interfaz.
- El proceso termina con la instalación de los controladores en el sistema invitado y las pruebas de funcionamiento.
La configuración combina cambios en la BIOS, ajustes del núcleo de Linux y la asignación del dispositivo desde OLVM. Aunque la infografía propone un recorrido de doce pasos, los comandos y las opciones concretas deben adaptarse al hardware, la versión de Oracle Linux, el controlador gráfico y la configuración del entorno de virtualización.
Qué necesita el anfitrión antes de asignar la GPU
El primer requisito es contar con un anfitrión Oracle Linux compatible con KVM y con OLVM desplegado y operativo. También hace falta un procesador con soporte para virtualización por hardware y una GPU que pueda reservarse para la máquina virtual. Si el sistema anfitrión necesita esa tarjeta para su consola gráfica, será necesario disponer de otra solución de acceso antes de aislarla.
La preparación comienza en la BIOS o UEFI. En plataformas Intel hay que habilitar Intel VT-d, mientras que en sistemas AMD se utiliza AMD-Vi. Estas tecnologías proporcionan las funciones de entrada/salida necesarias para que el sistema pueda asignar dispositivos físicos a máquinas virtuales con aislamiento de memoria.
Después se configura IOMMU en Oracle Linux mediante los parámetros de arranque del núcleo. La infografía propone editar /etc/default/grub, añadir las opciones correspondientes a la plataforma y regenerar la configuración de GRUB. Para Intel incluye intel_iommu=on; para AMD, amd_iommu=on, junto con iommu=pt en el ejemplo mostrado.
La configuración debe corresponder a la plataforma y al método de arranque utilizado. Antes de reiniciar conviene guardar una copia de los archivos que se vayan a modificar y comprobar que la entrada de GRUB que se actualiza es la utilizada realmente por el sistema.
Una vez reiniciado el anfitrión, el siguiente paso es verificar que IOMMU está activo. La infografía propone consultar los mensajes del núcleo con dmesg y filtrar las referencias a IOMMU y DMA Remapping. Si no aparecen los mensajes esperados, es preferible resolver esa parte antes de continuar con VFIO.
Cómo aislar la GPU mediante VFIO
Con IOMMU habilitado, hay que identificar la GPU y, si procede, su función de audio. Muchas tarjetas gráficas presentan varios dispositivos PCI: el controlador gráfico y el audio HDMI o DisplayPort pueden aparecer por separado. La infografía utiliza lspci para localizarlos y anotar sus direcciones PCI.
A continuación, se revisan los grupos IOMMU. Estos grupos determinan qué dispositivos puede aislar el sistema como unidad de asignación. La tarjeta gráfica y sus funciones asociadas deben poder asignarse de forma compatible con los requisitos de aislamiento. Si el grupo incluye otros dispositivos que no se pueden separar de manera segura, habrá que revisar la plataforma y su topología PCI antes de seguir.
El siguiente paso es vincular el dispositivo al controlador vfio-pci, en lugar de dejarlo bajo el controlador gráfico habitual del anfitrión. La infografía muestra cómo registrar los identificadores de fabricante y dispositivo en la configuración de VFIO y comprobar después qué controlador ha quedado asociado a la GPU.
Los identificadores que aparecen en los comandos ilustrativos no deben copiarse sin comprobar el hardware real. Cada tarjeta puede utilizar valores diferentes, y un identificador incorrecto puede impedir que se reserve el dispositivo adecuado. También es necesario tratar por separado las funciones adicionales de la tarjeta, como el audio, cuando estén presentes.
Para mantener la asignación después de reiniciar, la guía propone guardar la configuración en /etc/modprobe.d/vfio.conf y regenerar la imagen de arranque initramfs. El procedimiento exacto depende de la versión de Oracle Linux y de cómo se gestione el arranque en ese equipo. Tras el reinicio, hay que verificar de nuevo que el controlador esperado está asociado a cada función PCI.
Incorporar el dispositivo a OLVM y probar la máquina virtual
Cuando el anfitrión tiene la GPU preparada, se comprueba que OLVM la detecta. Desde Oracle Linux Virtualization Manager, la infografía indica la ruta Compute → Hosts → New Host para añadir un anfitrión si todavía no está registrado. Después, en la ficha del anfitrión, hay que revisar el apartado de dispositivos para confirmar que aparecen la GPU y, cuando corresponda, su función de audio.
El siguiente paso se realiza desde Compute → Virtual Machines. Se selecciona la máquina virtual, se abre su configuración y se accede a Host Devices para añadir el dispositivo PCI. En ese punto se elige la GPU y se comprueba si también es necesario asignar su función de audio. La infografía recoge las opciones «Enable» y «Start in VM», que deben revisarse según las posibilidades que ofrezca la versión instalada de OLVM.
La disponibilidad de estas opciones y los nombres exactos de los menús pueden variar entre versiones. Antes de aplicar cambios en producción, conviene contrastar el procedimiento con la documentación correspondiente a la versión concreta de OLVM y Oracle Linux.
Con el dispositivo asignado, se inicia la máquina virtual y se accede al sistema operativo invitado. En RHEL u Oracle Linux, la infografía propone instalar los controladores gráficos mediante el gestor de paquetes, aunque el paquete concreto debe elegirse según el fabricante de la GPU, la versión del sistema y el método de distribución del controlador. En Windows, indica que se utilicen los controladores oficiales de NVIDIA o AMD.
La validación no debería limitarse a comprobar que la máquina virtual arranca. En tarjetas NVIDIA, nvidia-smi permite confirmar si el controlador reconoce la GPU y muestra información del dispositivo. También se pueden utilizar herramientas gráficas como glxinfo para revisar el renderizado OpenGL cuando estén instaladas y sean pertinentes para la carga de trabajo.
Por último, conviene ejecutar una aplicación o una prueba de rendimiento representativa del uso previsto y vigilar la estabilidad del anfitrión y de la máquina virtual. La asignación directa puede reducir la sobrecarga asociada a la virtualización gráfica, pero el resultado real depende de la GPU, los controladores, la aplicación y la configuración del sistema.
Errores habituales y recomendaciones para producción
Si la máquina virtual no arranca después de asignar la GPU, la infografía recomienda revisar los registros del sistema, incluidos los mensajes de journalctl. Si el dispositivo no aparece dentro del invitado, conviene comprobar que la GPU está vinculada a VFIO, que los grupos IOMMU son adecuados y que OLVM muestra el dispositivo correctamente.
En Windows, el código de error 43 aparece entre los problemas que pueden requerir diagnóstico. La imagen sugiere revisar la configuración de la GPU y las versiones de los controladores, además de otros componentes de la plataforma. No existe una única corrección válida para todos los casos: hay que identificar la causa concreta antes de modificar la configuración.
Otro riesgo es perder el acceso a la consola del anfitrión si se asigna la única GPU disponible. Por eso la guía aconseja disponer de una GPU secundaria o de acceso remoto mediante SSH, KVM sobre IP o una consola de gestión como IPMI o iLO, según el hardware. También recomienda mantener el sistema actualizado, hacer copias de seguridad de las máquinas virtuales antes de los cambios y revisar los grupos IOMMU antes de asignar dispositivos.
El GPU passthrough puede ofrecer a una máquina virtual acceso directo a una tarjeta gráfica física, con ventajas para cargas que necesitan aceleración por hardware. Sin embargo, exige reservar el dispositivo, comprobar el aislamiento y mantener una configuración coherente entre el anfitrión, OLVM y el sistema invitado. La infografía proporciona una guía general de trabajo, no una receta universal para todas las versiones y plataformas.
Preguntas frecuentes
¿Qué es GPU passthrough en KVM?
Es una técnica que asigna una GPU física a una máquina virtual para que el sistema invitado pueda utilizarla directamente. Se emplea en cargas que necesitan aceleración gráfica o de cálculo.
¿Qué función cumple IOMMU?
IOMMU permite gestionar el acceso de los dispositivos a la memoria y proporciona el aislamiento necesario para asignar hardware PCI a máquinas virtuales. En Intel se relaciona con VT-d y en AMD con AMD-Vi.
¿Para qué sirve VFIO en Oracle Linux?
VFIO permite vincular y exponer dispositivos físicos a máquinas virtuales de forma controlada. En esta configuración se utiliza para reservar la GPU y evitar que el anfitrión la gestione mediante su controlador gráfico habitual.
¿Cómo se comprueba que la GPU funciona dentro de la máquina virtual?
En una GPU NVIDIA, nvidia-smi permite comprobar si el controlador reconoce el dispositivo. También conviene ejecutar una aplicación o prueba representativa y revisar la estabilidad y el rendimiento del sistema invitado.