virtio-nvgpu — ein Modul zur Bereitstellung des Zugangs zu NVIDIA-GPUs aus KVM-VMs

Das virtio-nvgpu-Projekt entwickelt ein virtio-GerĂ€t, das den Zugriff auf NVIDIA-GPUs aus Gastsystemen, die unter dem Hypervisor KVM betrieben werden, mit minimalem Leistungsverlust ermöglicht. Es umfasst ein Kernel-Modul, das im Gastsystem geladen wird, und ein virtio-GerĂ€t, das auf der Host-Seite ausgefĂŒhrt wird. Der Code des Kernel-Moduls ist in C geschrieben und unter der GPLv2-Lizenz lizenziert, wĂ€hrend der Code des virtio-GerĂ€ts in Rust geschrieben und unter der Apache 2.0-Lizenz lizenziert ist.

Laut EinschĂ€tzung der Entwickler ĂŒberschreitet der Leistungsverlust beim Zugriff auf die GPU 2% nicht. Die hohe Geschwindigkeit wird durch die Umleitung von ioctl-Aufrufen an den nativen NVIDIA-Treiber und die Arbeit auf der ABI-Ebene des NVIDIA-Treibers erreicht, ohne Anfragen auf API-Ebene zu ĂŒbersetzen. Auf der Seite des Gastsystems kommen die Standardbibliotheken und hochrangigen NVIDIA-Treiber, die im Benutzermodus arbeiten, zum Einsatz.

Im Gastsystem wird ein Kernel-Modul geladen, das die GerĂ€tedateien /dev/nvidiactl, /dev/nvidia0
N, /dev/nvidia-uvm bereitstellt und ioctl()- und mmap()-Aufrufe ĂŒber virtqueue an einen Handler auf der Host-Seite weiterleitet, der sie an den NVIDIA-Treiber des Hosts ĂŒbergibt. Um Kontextwechsel zwischen dem Hosts-System und der virtuellen Maschine zu vermeiden, werden die Befehlsbuffer (mmap) in einen gemeinsamen Speicher abgebildet, der fĂŒr das Host-Umfeld und die GPU zugĂ€nglich ist.

Im Gegensatz zur exklusiven Weiterleitung des Zugriffs auf die GPU (VFIO Passthrough) ermöglicht das virtio-nvgpu-Projekt den gemeinsamen Zugriff auf eine GPU von mehreren virtuelle Maschinen, wĂ€hrend es sich im Unterschied zu virtio-gpu (Venus, VirGL) ĂŒber die ABI-Umleitung an den NVIDIA-Treiber und nicht auf der Ebene der Übersetzung von Grafik-APIs wie Vulkan und OpenGL arbeitet. Nachteile von virtio-nvgpu sind das Fehlen einer vollstĂ€ndigen Isolierung auf Basis von IOMMU (Gastsysteme arbeiten ĂŒber den Host-NVIDIA-Treiber und sind lediglich auf die Filterung von ioctl-Aufrufen beschrĂ€nkt) und die Bindung an die ABI der NVIDIA-Treiber (ABI Ă€ndert sich bei jeder Version und erfordert eine Anpassung von virtio-nvgpu).

Die Möglichkeiten von virtio-nvgpu sind ausreichend fĂŒr Rendering, Video-Encoding und Berechnungen mit den APIs Vulkan, OpenGL, NVENC und CUDA. Als Hauptanwendungsbereich werden Cloud-Gaming-Dienste oder virtuelle ArbeitsplĂ€tze genannt, in denen ein Spiel oder eine grafische Anwendung gestartet wird. virtuellen Maschine, in dem das Rendering, die Hardwarekodierung des Ergebnisses mit NVENC und die Übertragung des Outputs an den entfernten Benutzer in Form eines komprimierten Video-Streams erfolgen.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster