virtio-nvgpu — een module voor het bieden van toegang tot NVIDIA GPU's vanuit KVM virtuele machines

Het virtio-nvgpu-project ontwikkelt een virtio-apparaat dat toegang biedt tot NVIDIA GPU's vanuit gastsystemen die draaien onder de KVM-hypervisor, met minimale prestatieverlies. Het bevat een kernelmodule die in het gastensysteem wordt geladen en een virtio-apparaat dat aan de hostzijde wordt uitgevoerd. De code van de kernelmodule is geschreven in C en wordt verspreid onder de GPLv2-licentie, terwijl de code van het virtio-apparaat in Rust is geschreven en wordt verspreid onder de Apache 2.0-licentie.

Volgens de ontwikkelaars bedraagt het prestatieverlies bij toegang tot de GPU niet meer dan 2%. Hoge operationele snelheid wordt bereikt door ioctl-aanroepen door te sturen naar de native NVIDIA-driver en te werken op het niveau van de NVIDIA-driver ABI, zonder vertaling van verzoeken op API-niveau. Aan de gastzijde worden standaardbibliotheken en high-level NVIDIA-drivers gebruikt die in de gebruikersruimte werken.

In het gastensysteem wordt een kernelmodule geladen die apparaatsbestanden /dev/nvidiactl, /dev/nvidia0…N, /dev/nvidia-uvm biedt en ioctl() en mmap() aanroepen via virtqueue doorgeeft aan de handler aan de hostzijde, die deze doorstuurt naar de host-NVIDIA-driver. Om contextwisselingen tussen het host-systeem en de virtuele machine te verminderen, worden commandobuffers gereflecteerd (mmap) in gedeeld geheugen dat toegankelijk is voor de hostomgeving en de GPU.

In tegenstelling tot de exclusieve toegang tot de GPU (VFIO Passthrough), biedt het virtio-nvgpu-project gedeelde toegang tot één GPU vanuit meerdere virtuele machines, terwijl het in tegenstelling tot virtio-gpu (Venus, VirGL) werkt via ABI-doorvoeren naar de NVIDIA-driver, en niet op het niveau van de vertaling van de grafische API's Vulkan en OpenGL. Nadelen van virtio-nvgpu zijn het gebrek aan volledige isolatie op basis van IOMMU (gastsystemen werken via de host-NVIDIA-driver en zijn beperkt tot het filteren van ioctl-aanroepen) en de binding aan de NVIDIA-driver ABI (de ABI verandert bij elke versie en vereist aanpassing van virtio-nvgpu).

De mogelijkheden van virtio-nvgpu zijn voldoende voor rendering, video-encoding en berekeningen met behulp van de Vulkan-, OpenGL-, NVENC- en CUDA-API. Als primaire toepassingsgebied wordt de ontwikkeling van cloud-gamingdiensten of virtuele werkplekken genoemd, waarin een spel of grafische applicatie wordt uitgevoerd in een virtuele machine, waarin de rendering plaatsvindt, de hardwarecodering van het resultaat met behulp van NVENC en de overdracht van de output aan de externe gebruiker in de vorm van een gecomprimeerde videostream.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster