virtio-nvgpu — módulo para proporcionar acceso a la GPU NVIDIA desde máquinas virtuales KVM

El proyecto virtio-nvgpu desarrolla un dispositivo virtio que permite acceder a la GPU NVIDIA desde sistemas invitados, ejecutándose bajo el hipervisor KVM, con una pérdida mínima de rendimiento. Incluye un módulo del kernel que se carga en el sistema invitado y un dispositivo virtio que se ejecuta en el lado del entorno host. El código del módulo del kernel está escrito en C y se distribuye bajo la licencia GPLv2, mientras que el código del dispositivo virtio está escrito en Rust y se distribuye bajo la licencia Apache 2.0.

Según estimaciones de los desarrolladores, la pérdida de rendimiento al acceder a la GPU no supera el 2%. La alta velocidad de funcionamiento se logra gracias al redireccionamiento de las llamadas ioctl al controlador nativo de NVIDIA y al funcionamiento a nivel del ABI del controlador NVIDIA, sin traducción de las solicitudes a nivel de API. En el lado del sistema invitado se utilizan bibliotecas estándar y controladores de alto nivel de NVIDIA que funcionan en el espacio de usuario.

En el sistema invitado se carga un módulo del kernel que proporciona archivos de dispositivos /dev/nvidiactl, /dev/nvidia0…N, /dev/nvidia-uvm y reenvía las llamadas ioctl() y mmap() a través de virtqueue a un controlador en el lado del entorno host, que las pasa al controlador host de NVIDIA. Para evitar cambios de contexto entre el sistema host y la máquina virtual, los búferes de comandos se reflejan (mmap) en una memoria compartida, accesible para el entorno host y la GPU.

A diferencia del paso exclusivo de acceso a la GPU (VFIO Passthrough), el proyecto virtio-nvgpu proporciona acceso compartido a una GPU desde múltiples máquinas virtuales, y a diferencia de virtio-gpu (Venus, VirGL) opera a través del paso del ABI al controlador NVIDIA, en lugar de a nivel de traducción de las APIs gráficas Vulkan y OpenGL. Las desventajas de virtio-nvgpu son la falta de una verdadera aislamiento basado en IOMMU (los sistemas invitados funcionan a través del controlador host de NVIDIA y están limitados solo a la filtración de llamadas ioctl) y la dependencia del ABI de los controladores NVIDIA (el ABI cambia en cada versión y requiere adaptación de virtio-nvgpu).

Las capacidades de virtio-nvgpu son suficientes para renderizar, codificar video y realizar cálculos utilizando las APIs Vulkan, OpenGL, NVENC y CUDA. Se menciona como el principal ámbito de aplicación la creación de servicios de juegos en la nube o estaciones de trabajo virtuales, donde un juego o aplicación gráfica se ejecuta en una máquina virtual, en la que se realiza la representación, la codificación de hardware del resultado utilizando NVENC y la transmisión de la salida al usuario remoto en forma de un flujo de video comprimido.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster