virtio-nvgpu — un module permettant d'accĂ©der aux GPU NVIDIA depuis des machines virtuelles KVM

Le projet virtio-nvgpu développe un périphérique virtio permettant d'accéder aux GPU NVIDIA depuis des systÚmes invités exécutés sous l'hyperviseur KVM, avec un impact minimal sur les performances. Il se compose d'un module noyau chargé dans le systÚme invité et d'un périphérique virtio exécuté sur l'hÎte. Le code du module noyau est écrit en C et distribué sous licence GPLv2, tandis que le code du périphérique virtio est écrit en Rust et distribué sous licence Apache 2.0.

D'aprĂšs les dĂ©veloppeurs, la perte de performance lors de l'accĂšs au GPU ne dĂ©passe pas 2 %. Ces hautes performances sont obtenues en redirigeant les appels ioctl vers le pilote NVIDIA natif et en opĂ©rant au niveau de l'ABI du pilote NVIDIA, sans traduction des requĂȘtes au niveau de l'API. CĂŽtĂ© systĂšme invitĂ©, des bibliothĂšques natives et des pilotes NVIDIA de haut niveau s'exĂ©cutent dans l'espace utilisateur.

Un module noyau est chargé dans le systÚme invité. Il fournit les fichiers de périphériques /dev/nvidiactl, /dev/nvidia0
N et /dev/nvidia-uvm et achemine les appels ioctl() et mmap() via une file d'attente virtuelle vers un gestionnaire sur l'environnement hÎte, qui les transmet au pilote NVIDIA hÎte. Afin d'éviter les changements de contexte entre le systÚme hÎte et la machine virtuelle, les tampons de commandes sont mappés (mmapés) dans la mémoire partagée accessible par l'environnement hÎte et le GPU.

Contrairement Ă  l'accĂšs direct exclusif au GPU (VFIO Passthrough), le projet virtio-nvgpu permet un accĂšs partagĂ© Ă  un GPU depuis plusieurs machines virtuellesContrairement Ă  virtio-gpu (Venus, VirGL), virtio-nvgpu fonctionne par transfert ABI vers le pilote NVIDIA, et non au niveau de la traduction des API graphiques Vulkan et OpenGL. Ses inconvĂ©nients incluent l'absence d'isolation complĂšte basĂ©e sur l'IOMMU (les systĂšmes invitĂ©s fonctionnent via le pilote hĂŽte NVIDIA et se limitent au filtrage des appels ioctl) et sa dĂ©pendance Ă  l'ABI du pilote NVIDIA (l'ABI changeant Ă  chaque version, virtio-nvgpu doit ĂȘtre adaptĂ©).

Les capacitĂ©s du virtio-nvgpu sont suffisantes pour le rendu, l'encodage vidĂ©o et le calcul utilisant les API Vulkan, OpenGL, NVENC et CUDA. L'application principale citĂ©e est la crĂ©ation de services de jeux en nuage ou de bureaux virtuels oĂč un jeu ou une application graphique s'exĂ©cute. machine virtuelle, qui effectue le rendu, l'encodage matĂ©riel du rĂ©sultat Ă  l'aide de NVENC et la transmission de la sortie Ă  l'utilisateur distant sous la forme d'un flux vidĂ©o compressĂ©.

Source: opennet.ru

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster