virtio-nvgpu — modul for å gi tilgang til NVIDIA GPU fra KVM virtuelle maskiner

Virtio-nvgpu-prosjektet utvikler et virtio-enhet som gir tilgang til NVIDIA GPU fra gjestesystemer som kjører under KVM-hypervisoren, med minimal ytelsestap. Det inkluderer en kjernekatalog modul, lastet inn i gjestesystemet, og en virtio-enhet som kjører på vertsiden. Koden til kjernekatalogmodulen er skrevet i C og distribueres under GPLv2-lisensen, mens koden til virtio-enheten er skrevet i Rust og distribueres under Apache 2.0-lisensen.

Ifølge utviklernes vurdering overstiger ikke ytelsestapet ved tilgang til GPU 2%. Høy ytelse oppnås ved å omdirigere ioctl-anrop til den native NVIDIA-driveren og operere på NVIDIA-driverens ABI-nivå, uten oversettelse av forespørslene på API-nivå. På gjestesystemets side brukes standardbiblioteker og høynivå NVIDIA-drivere, som kjører i brukerrommet.

I gjestesystemet lastes det inn en kjernekatalogmodul som gir enhetsfiler /dev/nvidiactl, /dev/nvidia0…N, /dev/nvidia-uvm og videreformidler ioctl() og mmap() forespørslene via virtqueue til en håndterer på vertsiden, som sender dem til NVIDIA-driveren på vertssystemet. For å kvitte seg med konteksskift mellom verts- og virtuell maskin, avspeiles kommando- og dataminne i delt minne, tilgjengelig for vertssetting og GPU.

I motsetning til eksklusiv tilgang til GPU (VFIO Passthrough) tilbyr virtio-nvgpu delt tilgang til én GPU fra flere gjestesystemer, virtual machinesmens virtio-gpu (Venus, VirGL) fungerer gjennom videreformidling av ABI til NVIDIA-driveren, og ikke på nivået for oversettelse av grafiske API-er som Vulkan og OpenGL. Ulempene med virtio-nvgpu er mangel på full isolasjon basert på IOMMU (gjestesystemer kjører via verts NVIDIA-driveren og er kun begrenset til filtrering av ioctl-anrop) og avhengigheten av NVIDIA-driverens ABI (ABI endres i hver versjon og krever tilpasning av virtio-nvgpu).

Virtio-nvgpu har tilstrekkelige muligheter til å utføre rendering, videokoding og beregninger ved hjelp av API-er som Vulkan, OpenGL, NVENC og CUDA. Hovedanvendelsen nevnes som opprettelse av skybaserte spilltjenester eller virtuelle arbeidsplasser der spill eller grafiske applikasjoner kjører i en virtuell maskin, der det skjer rendering, maskinvarekoding av resultatet ved hjelp av NVENC og overføring av utdata til en ekstern bruker i form av en komprimert videostrøm.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster