Guía Hardware

Virtualización de GPU: qué es y qué ventajas tiene

Actualizado a: 22 de enero de 2024

Gracias al hipervisor se puede recrear un sistema informático para poder ejecutar otro sistema operativo y apps sobre el sistema operativo anfitrión. Para ello, se usa una máquina virtual que no es más que una especie de contenedor que toma recursos de hardware de la máquina real para cederlos a la máquina virtual. Uno de esos recursos tiene relación con la virtualización de GPU. ¿Quieres conocer de qué se trata?

Virtualización

hipervisor
A la izquierda un hipervisor bare-metal ejecutándose directamente sobre el hardware. A la derecha un hipervisor más convencional, haciéndolo sobre el sistema operativo.

La virtualización es un concepto que describe la capacidad para poder imitar o simular las características físicas de un ordenador para poder implementar un sistema informático virtual. Sin entrar en detalles de los diferentes tipos de virtualización que existen, hay que decir que esas características físicas las toma de los recursos de hardware existentes en la máquina anfitriona, y que son:

  • vCPU: se denomina así a los recursos de CPU que se le otorgan a la máquina virtual. Como estos se toman de recursos de hardware real, no se pueden asignar más CPUs de las existentes físicamente. Eso sí, los núcleos lógicos sí que se interpretarán como un núcleo real a vista de la máquina virtual. Por ejemplo, si tienes un AMD Ryzen 7 con 8 núcleos y tiene SMT 2-way, esto hace que tenga 16 núcleos lógicos (threads), por lo que se podrían asignar hasta 16 núcleos a la máquina virtual.
  • vRAM: al igual que lo anterior, también se pueden tomar porciones de la memoria RAM física de la máquina anfitriona para que la máquina virtual la uses para sus necesidades. Por supuesto, no se podría sobrepasar el límite físico instalado. Por ejemplo, si tienes una memoria RAM de 32 GB, puedes usar 8 GB para una máquina virtual, otros tantos para otra, etc.
  • vGPU: esto es un concepto más nuevo que la vCPU y que te explicaremos más adelante, aunque ya te puedes hacer una idea de lo que es…
  • Audio: también se pueden usar recursos para que la máquina virtual disponga de un sistema de sonido.
  • Adaptador de red: lo mismo para implementar una red virtual que puede estar conectada a la red anfitriona, actuar como si la máquina virtual estuviese en la misma red que la máquina anfitriona, etc. Así podría usar recursos de red o conectarse a Internet también desde el entorno virtual.
  • Medios de almacenamiento: por supuesto, también cogerá parte del almacenamiento disponible en tu HDD o SSD como unidad o unidades de almacenamiento reservados para la máquina virtual. Nuevamente la capacidad física es el límite. Para que esto sea posible, se crean discos duros virtuales que pueden ser fijos o de tamaño variable, creciendo en función de las necesidades de la máquina virtual. Por otro lado, no hay que olvidar que también se pueden virtualizar otros recursos de almacenamiento como la unidad óptica, etc.
  • Otros: los hipervisores actuales también permiten acceder a otros muchos recursos, como los puertos USB para conectar dispositivos, opciones para usar firmware basado en BIOS o en EFI para la máquina virtual, etc. Por ejemplo, en VirtualBox se puede usar también tanto el chipset PIIX3, que era una implementación más vieja, o el chipset ICH9 que es más moderno. El ICH9 soporta PCIe, tres buses PCI, interrupciones señalizadas por mensajes o MSI en vez de IRQ, hasta 36 tarjetas de red frente a las 8 de PIIX3, etc.

Como ves, una máquina virtual es básicamente como una máquina real, ejecutándose sobre un hipervisor que es el que se encargará de realizar la gestión entre el sistema virtualizado y el sistema anfitrión, como compartir los recursos necesarios, realizar las traducciones necesarias, etc.

¿Qué es la virtualización de GPU?

Como ya he explicado anteriormente, la máquina virtual necesita recursos de hardware para funcionar, y éstos los toma a través del hipervisor. Entre los recursos virtualizados destacan la vRAM, la vCPU, y también hablé de la vGPU o GPU virtual. Pues bien, es esta última solución de virtualización de GPU la que nos interesa en este artículo.

Gracias a esta tecnología, se puede aportar una solución gráfica virtual para que las máquinas virtuales tengan acceso a la aceleración gráfica accediendo a los recursos de la GPU física. Algo que no era posible antes, donde se usaban gráficos acelerados por software.

La virtualización de GPU se trata de una tecnología que permite que una GPU sea utilizada para mejorar la velocidad de aplicaciones GPGPU o gráficos que se están ejecutando en una máquina virtual. Se pueden utilizar diferentes técnicas, como la emulación de dispositivos o la API remota, para hacerlo posible.

Esto puede resultar muy beneficioso ya que permite que los recursos de hardware sean mejor aprovechados entre varias máquinas virtuales, lo que aumenta la eficiencia del sistema. En el caso de los VPS, esto ya es una realidad.

La virtualización de GPU también puede reducir el uso de la CPU al permitir que la máquina virtual utilice la GPU para acelerar los gráficos por hardware en lugar de hacerlo por medio de software, que sería una tarea cargada directamente sobre la CPU. En resumen, la virtualización de GPU permite utilizar la GPU física para renderizar y realizar otras tareas en las máquinas virtuales, lo que se traduce en una aceleración gráfica por hardware.

Ventajas de la virtualización de GPU

La virtualización de GPU mejora la eficiencia y el rendimiento de las máquinas virtuales de forma notable, como en el caso de los centros de datos donde se emplean VPS (Vitual Private Server). Pero no son las únicas ventajas, aquí tienes una lista:

  • Rendimiento: se mejora el rendimiento de las máquinas virtuales, especialmente todo lo que está relacionado con gráficos, además de acelerar tareas como la IA, ML, cómputo con GPGPU, etc. Y no solo eso, al reducir la carga de trabajo de la CPU al no tener que usar aceleración por software, también se gana rendimiento general.
  • Reduce los cuellos de botella: permitirá al sistema actuar de forma más desahogada en cargas de trabajo máximas al reducir la carga sobre la CPU, que ahora recae también sobre la GPU. Además, esto aporta también un rendimiento mucho más sólido en general.
  • Funciones mejoradas: se podrán usar apps que dependen directamente de la GPU, y no solo me refiero a gráficas como los videojuegos, etc., también acelerar software para IA, renderizado por GPU, e incluso otras tareas que pueden hacer uso de la GPU, como el descifrado mediante la GPU en vez de hacerlo por CPU que es más lento.

Gracias a la virtualización de GPU se mejora de forma evidente la virtualización, ofreciendo mejores rendimientos y también más opciones para los usuarios.

Técnicas usadas en la virtualización de GPU

vgpu

Para hacer posible la virtualización de GPU, se emplean varias técnicas diferentes, dependiendo de la empresa que la implemente. Las más importantes son:

  • API remota: permite la comunicación entre la API gráfica de una aplicación en la máquina virtual y la API gráfica del sistema anfitrión, para que la GPU pueda procesar los gráficos. Esta comunicación se realiza mediante el reenvío de llamadas a la API gráfica del sistema anfitrión, lo que puede afectar el rendimiento y comprometer el aislamiento completo de la máquina virtual respecto al sistema anfitrión. Además, existen herramientas de terceros, como VMGL para OpenGL o rCUDA para CUDA, que agregan soporte para APIs específicas y permiten una mejor integración entre la máquina virtual y el sistema anfitrión.
  • Pass-through fijo o pass-through de GPU: la técnica es cuando una única máquina virtual accede de manera exclusiva y permanente a una GPU, lo que se conoce como asignación directa. Esta técnica puede mejorar significativamente el rendimiento, llegando al 96-100% del rendimiento nativo, y ofrece una alta fidelidad en la representación gráfica. Comparado con la técnica anterior, que ofrece aproximadamente un 86% del rendimiento nativo, la asignación directa ofrece un mejor rendimiento. Sin embargo, una desventaja importante de la asignación directa es que la GPU no puede ser compartida por varias máquinas virtuales, lo que significa que cada una debe tener su propia GPU física adicional. Esto aumenta el costo del hardware necesario para implementar esta técnica.
  • Transferencia mediada: se basa en asignar un rango de memoria virtual a cada máquina virtual a través del IOMMU, lo que permite al hardware de la GPU proporcionar contextos para cada máquina virtual. En esta técnica, el hipervisor se encarga de enviar los comandos gráficos de las máquinas virtuales a la GPU, sin necesidad de reenviar llamadas de la API gráfica. Es como si los recursos de la GPU se dividieran en particiones para que cada máquina virtual pueda hacer uso de ellos de manera directa. Esta técnica se encuentra en un punto intermedio entre las dos técnicas anteriores, ya que no se requiere el reenvío de llamadas de la API gráfica, pero aún permite que varias máquinas virtuales hagan uso de una misma GPU. Esta técnica es soportada por tecnologías como NVIDIA vGPU, AMD MxGPU, Intel GVT-g, entre otras.
  • Emulación de dispositivos: dado que las arquitecturas de las GPU son extremadamente complejas y cambian constantemente, y además son secretos comerciales en muchos casos, los desarrolladores de software hipervisor no pueden virtualizar con éxito las últimas generaciones de GPU. Solo es posible virtualizar algunas GPU más antiguas y simples, como la 3dfx Voodoo2 o la S3 ViRGE/DX. A pesar de esto, incluso en estas GPU antiguas, la virtualización puede ser un desafío debido a la complejidad de la arquitectura de la GPU. A pesar de estas limitaciones, incluso las máquinas virtuales que no tienen aceleración gráfica 3D pueden tener una funcionalidad básica para acceder a estas máquinas a través de un terminal gráfico.

Espero haberte servido de ayuda y que ahora entiendas un poco mejor qué es eso de la virtualización de GPU, y que si no la conocías puedas comenzar a aprovechar sus ventajas desde hoy…

Jaime Herrera

Jaime Herrera

Técnico electrónico y experto en el sector de los semiconductores y el hardware. Con una amplia y sólida trayectoria en el campo de la electrónica, he acumulado una extensa experiencia. Mi pasión por la tecnología y la informática me ha impulsado a dedicar décadas de mi vida al estudio y desarrollo de soluciones en este fascinante sector. Como técnico electrónico, he tenido el privilegio de trabajar en una variedad de proyectos y desafíos, lo que me ha permitido adquirir un profundo conocimiento y experiencia en la creación, diseño y mantenimiento de dispositivos electrónicos.

>
Guía Hardware
Logo