virtio-nvgpu — وحدة لتوفير الوصول إلى وحدات معالجة الرسومات من NVIDIA من الأجهزة الافتراضية KVM

يطوّر مشروع virtio-nvgpu جهاز virtio يُمكّن الوصول إلى وحدات معالجة الرسومات NVIDIA من الأنظمة الضيفة التي تعمل تحت مُشرف KVM بأقل تأثير على الأداء. يتألف المشروع من وحدة نواة تُحمّل في النظام الضيف وجهاز virtio يعمل على النظام المضيف. كُتب كود وحدة النواة بلغة C ومرخص بموجب رخصة GPLv2، بينما كُتب كود جهاز virtio بلغة Rust ومرخص بموجب رخصة Apache 2.0.

بحسب المطورين، لا يتجاوز انخفاض الأداء عند الوصول إلى وحدة معالجة الرسومات 2%. ويتحقق الأداء العالي من خلال إعادة توجيه استدعاءات ioctl إلى برنامج تشغيل NVIDIA الأصلي والعمل على مستوى واجهة برمجة التطبيقات (ABI) لبرنامج تشغيل NVIDIA، دون ترجمة الطلبات على مستوى واجهة برمجة التطبيقات (API). أما على جانب نظام التشغيل الضيف، فتُستخدم المكتبات الأصلية وبرامج تشغيل NVIDIA عالية المستوى التي تعمل في مساحة المستخدم.

يتم تحميل وحدة نواة في النظام الضيف. توفر هذه الوحدة ملفات الأجهزة /dev/nvidiactl و/dev/nvidia0…N و/dev/nvidia-uvm، وتوجه استدعاءات ioctl() وmmap() عبر قائمة انتظار افتراضية إلى معالج في بيئة النظام المضيف، والذي بدوره يمررها إلى برنامج تشغيل NVIDIA المضيف. ولتجنب تبديل السياق بين النظام المضيف والآلة الافتراضية، يتم ربط مخازن الأوامر (mmapped) بذاكرة مشتركة يمكن الوصول إليها من قِبل بيئة النظام المضيف ووحدة معالجة الرسومات.

على عكس تمرير الوصول الحصري لوحدة معالجة الرسومات (VFIO Passthrough)، يوفر مشروع virtio-nvgpu وصولاً مشتركاً إلى وحدة معالجة رسومات واحدة من عدة وحدات. آلة افتراضيةوعلى عكس virtio-gpu (Venus، VirGL)، يعمل هذا البرنامج عبر تمرير واجهة التطبيق الثنائية (ABI) إلى برنامج تشغيل NVIDIA، بدلاً من العمل على مستوى ترجمة واجهة برمجة تطبيقات الرسومات Vulkan وOpenGL. تشمل عيوب virtio-nvgpu عدم وجود عزل كامل قائم على IOMMU (حيث تعمل الأنظمة الضيفة من خلال برنامج تشغيل NVIDIA المضيف وتقتصر على تصفية استدعاءات ioctl) واعتماده على واجهة التطبيق الثنائية (ABI) لبرنامج تشغيل NVIDIA (تتغير واجهة التطبيق الثنائية مع كل إصدار، مما يتطلب تعديل virtio-nvgpu).

تُعدّ إمكانيات وحدة معالجة الرسومات الافتراضية virtio-nvgpu كافيةً للرسم، وتشفير الفيديو، والحوسبة باستخدام واجهات برمجة التطبيقات Vulkan وOpenGL وNVENC وCUDA. ويتمثل التطبيق الرئيسي المذكور في إنشاء خدمات الألعاب السحابية أو أجهزة سطح المكتب الافتراضية حيث يتم تشغيل لعبة أو تطبيق رسومات. آلة افتراضية، والتي تقوم بعملية العرض، والترميز المادي للنتيجة باستخدام NVENC، ونقل المخرجات إلى المستخدم البعيد في شكل دفق فيديو مضغوط.

المصدر: opennet.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster