virtio-nvgpu — modul za omogućavanje pristupa NVIDIA GPU-ima iz KVM virtuelnih mašina

Projekt virtio-nvgpu razvija virtio uređaj koji omogućava pristup NVIDIA GPU-ima sa gostujućih sistema koji rade pod KVM hipervizorom uz minimalan utjecaj na performanse. Sastoji se od kernel modula učitanog u gostujući sistem i virtio uređaja koji radi na hostu. Kod kernel modula je napisan u C-u i licenciran pod GPLv2 licencom, dok je kod virtio uređaja napisan u Rustu i licenciran pod Apache 2.0 licencom.

Prema riječima programera, gubitak performansi pri pristupu GPU-u ne prelazi 2%. Visoke performanse se postižu preusmjeravanjem ioctl poziva na izvorni NVIDIA drajver i radom na ABI nivou NVIDIA drajvera, bez prevođenja zahtjeva na API nivou. Na strani gosta koriste se izvorne biblioteke i NVIDIA drajveri visokog nivoa koji se izvršavaju u korisničkom prostoru.

U gostujući sistem se učitava kernel modul. On pruža datoteke uređaja /dev/nvidiactl, /dev/nvidia0…N i /dev/nvidia-uvm i usmjerava pozive ioctl() i mmap() kroz virtuelni red čekanja do rukovaoca na host okruženju, koji ih prosljeđuje NVIDIA host drajveru. Da bi se izbjegle promjene konteksta između host sistema i virtuelne mašine, komandni baferi se mapiraju (mmapped) u dijeljenu memoriju kojoj mogu pristupiti host okruženje i GPU.

Za razliku od ekskluzivnog prolaza pristupa GPU-u (VFIO prolaz), projekat virtio-nvgpu omogućava deljeni pristup jednom GPU-u iz nekoliko... virtuelne mašine, i za razliku od virtio-gpu (Venus, VirGL), radi putem ABI prolaza do NVIDIA drajvera, umjesto na nivou prevođenja Vulkan i OpenGL grafičkog API-ja. Nedostaci virtio-nvgpu uključuju nedostatak potpune izolacije zasnovane na IOMMU-u (gostujući sistemi rade putem NVIDIA host drajvera i ograničeni su na filtriranje ioctl poziva) i oslanjanje na ABI NVIDIA drajvera (ABI se mijenja sa svakom verzijom, što zahtijeva prilagođavanje virtio-nvgpu).

Mogućnosti virtio-nvgpu-a su dovoljne za renderiranje, kodiranje videa i računarstvo korištenjem Vulkan, OpenGL, NVENC i CUDA API-ja. Primarna navedena primjena je kreiranje cloud gaming servisa ili virtuelnih desktopa gdje se igra ili grafička aplikacija pokreće u... virtuelna mašina, koji vrši renderiranje, hardversko kodiranje rezultata pomoću NVENC-a i prenos izlaza udaljenom korisniku u obliku komprimiranog video toka.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster