virtio-nvgpu — modul pro poskytování přístupu k GPU NVIDIA z virtuálních strojů KVM

Projekt virtio-nvgpu rozvíjí virtio zařízení, které umožňuje přístup k GPU NVIDIA z hostitelských systémů běžících pod hypervizorem KVM s minimálním snížením výkonu. Součástí je modul jádra nahrávaný do hostitelského systému a virtio zařízení prováděné na straně hostitelského prostředí. Kód modulu jádra je napsán v jazyce C a je distribuován pod licencí GPLv2, zatímco kód virtio zařízení je napsán v Rustu a je distribuován pod licencí Apache 2.0.

Podle odhadů vývojářů ztráta výkonu při přístupu k GPU nepřesahuje 2 %. Vysoké rychlosti se dosahuje díky přesměrování ioctl volání na nativní ovladač NVIDIA a práci na úrovni ABI ovladače NVIDIA, bez překladů požadavků na úrovni API. Na straně hostitelského systému se používají standardní knihovny a vysoce úrovňové ovladače NVIDIA, které běží v uživatelském prostoru.

V hostitelském systému se načte modul jádra, který poskytuje zařízení souborů /dev/nvidiactl, /dev/nvidia0…N, /dev/nvidia-uvm a předává volání ioctl() a mmap() přes virtqueue k obslužnému programu na straně hostitelského prostředí, který je předává hostitelskému ovladači NVIDIA. Pro odstranění přepínání kontextu mezi hostitelským systémem a virtuálním strojem jsou příkopy příkazů odráženy (mmap) do sdílené paměti, která je dostupná hostitelskému prostředí a GPU.

Na rozdíl od exkluzivního přístupu k GPU (VFIO Passthrough) projekt virtio-nvgpu umožňuje sdílený přístup k jednomu GPU z více virtuálních strojů, a na rozdíl od virtio-gpu (Venus, VirGL) pracuje skrze předání ABI k ovladači NVIDIA, ne na úrovni překladů grafických API Vulkan a OpenGL. Nevýhodami virtio-nvgpu jsou nedostatek plné izolace na bázi IOMMU (hostitelské systémy pracují skrze hostitelský ovladač NVIDIA a jsou omezeny pouze na filtrování volání ioctl) a vazba na ABI ovladače NVIDIA (ABI se mění v každé verzi a vyžaduje adaptaci virtio-nvgpu).

Možnosti virtio-nvgpu jsou dostatečné pro rendering, kódování videa a výpočty pomocí API Vulkan, OpenGL, NVENC a CUDA. Hlavní oblastí použití je uvedeno vytváření cloudových herních služeb nebo virtuálních pracovních míst, ve kterých je hra nebo grafická aplikace spuštěna v virtuálním stroji, ve které dochází k renderování, hardwarovému kódování výsledku pomocí NVENC a přenosu výstupu vzdálenému uživateli ve formě komprimovaného video streamu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster