
virtio-nvgpu KVM qonaqlarına NVIDIA GPU-ya demək olar ki, yerli giriş verir
Nestri komandası eksperimental virtio-nvgpu cihazını dərc edib. Cihaz NVIDIA sürücüsünün ioctl-larını ABI səviyyəsində ötürür: RTX 3060 ölçmələrində qonaq, 2 ms-dən ağır kadrlarda virtuallaşdırmasız sistemin 2%-i içində qalır.
Nestri komandası, açıq mənbəli bulud oyun platforması nesbox layihəsinin müəllifləri, eksperimental virtio-nvgpu cihazını dərc edib. Cihaz KVM altındakı Linux qonağına NVIDIA kartına demək olar ki, yerli giriş verir. Modul qrafik API çağırışlarını tərcümə etmək əvəzinə NVIDIA nüvə sürücüsünün ioctl-larını qonaqla host arasında driver ABI səviyyəsində ötürür; buna görə qonaqda NVIDIA-nın öz sürücüləri dəyişdirilmədən işləyir və eyni Vulkan və NVENC eyni kartla danışır.
Layihənin hədəfi ekransız yayımdır (headless streaming): virtual maşındakı kompozitor kadrları GPU-da çəkir, birləşdirir və kodlayır, bayıra yalnız sıxılmış video çıxır. Virtual maşında monitor yoxdur, kart isə hostda qalır.
Sürücünü ötür, API-ni yox
Qonaqdakı nüvə modulu /dev/nvidiactl, /dev/nvidia0...N və /dev/nvidia-uvm cihazlarını qeydiyyatdan keçirir. Hər ioctl virtqueue-ya yazılır, VMM daxilindəki ABI-ni bilən komponent onu hostun cihaz fayllarına qarşı tərcümə edib icra edir, mmap çağırışları isə ümumi yaddaş pəncərəsini birləşdirir. Əks istiqamətdəki ikinci növbə GPU-nun hazır olduğunu qonağa bildirir; gözləmə əvəzinə yatmağa imkan verən də budur.
Qonaqdakı istifadəçi rejimi sürücüsü GPU əmr buferlərini yerli olaraq qurduğu üçün ayrı-ayrı draw call-lar virtuallaşdırma sərhədini heç vaxt keçmir: tam bir mərhələdə qonaq 813.691 kadr çəkdi, backend isə cəmi 13.792 mesaj emal etdi, yəni hər 59 kadra bir keçid.
Rəqəmlər
Ölçmələr 595.99.02 sürücülü RTX 3060-da aparılıb: hostda Ubuntu 26.04 və Ryzen 7 9850X3D, qonaqda 2 vCPU və Linux 7.2. Təxminən 2 ms-dən ağır kadrlarda fərq eyni maşının virtuallaşdırmasız vəziyyətinə nisbətən 2% daxilində qalır: 39 ms-lik kadr qonaqda 0,4% daha sürətli, 2 ms-lik isə 1,7% daha yavaş çıxdı. Çox yüngül kadrlar daha çox itirir (0,5 ms-də 7,1%), çünki oyanma təxminən 0,02 ms-ə başa gəlir.
CPU xərci virtuallaşdırmasız sistemlə eynidir: eyni 12 saniyə ərzində qonaq 0,37 saniyə, host isə 0,40 saniyə sərf etdi. Dörd qonaq bir kartı bərabər bölüşür: birlikdə 103,7 fps, tək qonaq isə 102,9 fps, və dördü eyni vaxtda sabit 60 Hz-də H.264 kodlayır.
Hələ olmayanlar
Müəlliflər təhlükəsizlik səthini açıq yazır: qonağın GPU işi ilə host arasında IOMMU sərhədi yoxdur, kart hostun sürücü domenində qalır, buna görə NVIDIA sürücüsü etibarlı hesablama bazasının hissəsidir. ABI profilində təsvir olunmayan ioctl-lar ötürülmək əvəzinə rədd edilir; README bunu avadanlıq izolyasiyası deyil, hücum səthinin azaldılması adlandırır. Bir-birinə etibar etməyən icarəçilər üçün VFIO və ya vGPU hələ də daha güclü həlldir.
Hər qonaq üçün nəzərdə tutulan qumluq (isolate) köməkçisi yalnız layihələndirilib; CUDA ötürülür, amma yalnız cihazların sadalanmasına qədər yoxlanılıb; MIG və SR-IOV əhatə dairəsindən kənardır. Sürücü dəstəyi açıqdır: üç ABI profili (535.129.03, 580.178.04 və 595.71.05).
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.