Las máquinas virtuales normalmente suelen tener un soporte limitado del hardware del sistema en el que están corriendo, esto es un problema para quienes trabajan en un entorno mixto entre Windows y GNU/Linux donde el Sistema Operativo principal es el primero y el segundo corre en una máquina virtual. Pues bien, NVIDIA en su última GPU acaba de activar la virtualización en sus tarjetas gráficas GeForce.
Dentro del mundo de las aplicaciones para Linux hay una gran cantidad de aplicaciones científicas que hacen uso de las funciones únicas de las GPUs, pero no solemos tener acceso a ella si ejecutamos una virtual, a no ser que estemos combinando una tarjeta gráfica dedicada con una integrada.
¿Qué es la virtualización en una GPU?
Los procesadores de comandos de una GPU normalmente solo pueden ejecutar una lista de comandos gráficos para mostrar el siguiente fotograma en pantalla, lo cual es un problema en dos condiciones. La primera es cuando hemos montado un servidor en la nube y tenemos varios clientes a los que hay que otorgarles una interfaz gráfica a tiempo real a cada uno de ellos, la segunda es cuando ejecutamos una o varias máquinas virtuales sobre un sistema operativo.
La virtualización requiere el uso de un procesador de comandos a medida para ello, hay sistemas como por ejemplo las Xbox One de Microsoft que ejecutan dos entornos al mismo tiempo, el del juego y los menús de la consola, utiliza dos procesadores de comandos al mismo tiempo. En otros caso se crean versiones especiales de las GPUs con el procesador de comandos modificado, especialmente con soporte para SR-IOV, pero se ha de tener en cuenta que dichas GPUs no se venden para los PCs de escritorio.
Es por ello que el soporte para virtualización en GPUs de escritorio es algo que se agradece, especialmente si tienes un sistema que carece con GPU integrada y no puedes asignar una segunda GPU a la máquina virtual, teniendo que ejecutar una VGA emulada.
Virtualización limitada en las GPUs NVIDIA GeForce
A partir del driver R465, las siguientes GPUs de la serie GeForce soportan virtualización:
- Escritorio: Kepler (GTX 700 y GTX 800), Maxwell (GTX 900), Pascal (GTX 1000), Turing (RTX 2000 y GTX 1600) y Ampere (RTX 3000).
- Portátiles: Maxwell ( GTX 800M y GTX 900 M), Pascal (GTX 1000M), Turing (RTX 2000 y GTX 1600) y Ampere (RTX 3000).
No obstante, desde el momento en que no se trata de una implementación por hardware sino a través del driver estamos limitados a una máquina virtual y el SR-IOV no esta activo. por lo que si quieres tener virtualización para varias máquinas virtuales deberás adquirir una tarjeta de la gama profesional de NVIDIA como las RTX Enterprise, Tesla o Quadro.
Por lo que si al empezar a leer la noticia teníais pensado crear un servidor en la nube con tarjetas gráficas GeForce, olvidaos de ello, ya que esta solución de NVIDIA a través de sus drivers es limitada. En todo caso, dado la tendencia de NVIDIA a unificar sus arquitecturas en un solo diseño junto al crecimiento del Cloud Gaming, Especialmente si tenemos en cuenta su GeForce Now, que le sirve a NVIDIA para reposicionar sus tarjetas gráficas no vendidas para el Cloud Gaming.