A Nestri Labs a virtio-nvgpu nevű kísérleti projekten dolgozik, amely lehetővé teszi, hogy Linux KVM vendégek hagyományos PCI passthrough nélkül érjék el az NVIDIA GPU-kat. A cél, hogy több, egymástól elszigetelt játék VM ugyanazt az NVIDIA GPU-t használja, képkockákat rendereljen, azokat NVENC-kel kódolja, majd a végeredményt távoli kliensekre streamelje.
Ahelyett, hogy egy teljes GPU-t egyetlen VM-hez rendelnének, a virtio-nvgpu a GPU-t a Linux gazdagépen tartja, és több vendég között osztja meg. A Nestri bemutatójában négy vendég futott egyszerre egyetlen GeForce RTX 3060 kártyán.
A projekt KVM-re és egy egyedi virtio eszközre épül. A vendég rendszeren belül az NVIDIA saját user-space driver-e változatlan marad, miközben egy vendég kernel driver továbbítja a szükséges kéréseket a gazdagépen futó NVIDIA driver felé.
A Vulkan- vagy OpenGL-hívásokat fordító megoldásokkal szemben a virtio-nvgpu az NVIDIA kernel driver ABI szintjén működik. Így a GPU-val kapcsolatos munka nagy része a vendégben marad, és kevesebb kommunikáció lépi át a VM-határt.
A Nestri mérései szerint a teljesítmény közel van a natívhoz, tipikus képkocka-terhelésnél nagyjából 2% vagy annál kisebb többlettel. A projekt támogatja a Vulkan renderelést, a Wayland megjelenítést, az NVENC kódolást és az alap CUDA eszköz-felsorolást is.
A kapcsolat a Nestrivel közvetlen: a nesbox projektjük könnyű, KVM-alapú microVM-eket használ felhős játékstreameléshez. Az Intel és AMD GPU-k már most is a meglévő virtio-gpu mechanizmusokra támaszkodnak, a virtio-nvgpu fejlesztése pedig azt a célt szolgálja, hogy hasonló támogatást nyújtson az NVIDIA hardverekhez.
Egyelőre a virtio-nvgpu kísérleti állapotban van. Nem nyújt olyan szintű elszigetelést, mint a VFIO passthrough, és a támogatás az NVIDIA driver ABI kompatibilitásától függ. Ennek ellenére a projekt már most használható: működik a Vulkan, a Wayland, az NVENC és a több vendég közötti GPU-megosztás.
További részletekért nézd meg a projekt GitHub tárolóját.

