العودة
لينكس 7.3 سيتعامل بسلاسة أكبر مع نفاد ذاكرة الفيديو
SiTech AI Team3 წთ. საკითხავი

لينكس 7.3 سيتعامل بسلاسة أكبر مع نفاد ذاكرة الفيديو

قُبلت في upstream تصحيحات للنواة تعيد صياغة تعامل سائق AMD مع نفاد ذاكرة الفيديو ووُضعت في طابور لينكس 7.3: ستتوقف الألعاب أقل وستكون أوقات الإطار أكثر استقراراً.

قُبلت في upstream تصحيحات للنواة تعيد صياغة سلوك سائق رسوميات AMD عند نفاد ذاكرة الفيديو، ووُضعت في طابور لينكس 7.3، بحسب تدوينة نُشرت في 17 أغسطس على مدونة pixelcluster. ويأتي هذا العمل استكمالاً لمشروع سابق لتحسين إدارة ذاكرة الفيديو في الألعاب.

فيزياء نفاد الذاكرة

نظرياً، ينبغي أن يؤثر نفاد ذاكرة الفيديو في الأداء لا في الاستقرار: يسمح السائق للتطبيق بطلب ذاكرة أكثر مما تحمله البطاقة، ويُنقل الفائض إلى ذاكرة النظام. وهذه النقلة بالتحديد هي عنق الزجاجة. على وصلة PCIe 4.0 x16 ينقل الناقل أقل قليلاً من 32 GiB في الثانية، أي نحو 32,2 MiB في الميلي ثانية. وعند هدف 30 إطاراً في الثانية يتاح للإطار الواحد 33,3 ميلي ثانية، ما يحدّ البيانات التي يستطيع المعالج الرسومي جلبها من الذاكرة المُفرغة بنحو 1075,5 MiB، أي أكثر قليلاً من 1 GiB. وإذا احتاج إطار واحد أكثر من ذلك، فإن 30 إطاراً في الثانية يصبح غير قابل للتحقيق.

خلل الاستقرار: حالة جمود في أقفال النواة

يضرّ النفاد بالاستقرار أيضاً. فبرنامج RADV يطبع رسالة "Not enough memory for command submission" عندما تعيد النواة الخطأ -ENOMEM، مع أن جميع عمليات تخصيص الذاكرة نجحت. والسبب حالة جمود من نوع ABBA: إرسال يحاول إفراغ تخصيص قفلته عملية أخرى، بينما تحتاج تلك العملية الثانية إلى ذاكرة تحتفظ بها الأولى. تستطيع النواة كشف هذا الجمود وإعادة المحاولة، لكن مكتبة drm_exec المساعدة لم تكن مستخدمة في TTM، طبقة إدارة ذاكرة المعالج الرسومي المشتركة. ولم تُدمج تصحيحات عام 2024 قط، فنقلها المطوّر إلى نواة حديثة وأصلح ما تبقى من أخطاء، في أسبوع كامل من ملاحقة تجمّدات ظهرت بعد ثلاث دقائق من ضغط شديد على ذاكرة الفيديو.

مخازن المسح وإفراغ 4 GiB

أظهر التحليل أن معظم الوقت المفقود يذهب إلى نقل المخازن عبر SDMA لا إلى الرسم. وأسوأ الحالات هو المخزن الممسوح إلى الشاشة، إذ تتجاوز عتاد الشاشة الذاكرة الافتراضية وتحتاج صفحات متجاورة فيزيائياً، بينما خوارزمية الإفراغ حلقة LRU بسيطة لا تراعي القيود الفيزيائية. وفي الواقع جرى إفراغ ما يصل إلى 4 GiB من ذاكرة الفيديو لإتاحة مكان لصور مسح تحتوي كل منها نحو 32 MiB من بيانات البكسلات؛ ومجرد نقل هذه البيانات يكلّف 130 ميلي ثانية على الأقل. وتستهدف مرحلتا التقييد الصارم والمرن الجديدتان إيقاف هذه الحركة المتبادلة للذاكرة.

ما الذي يقدمه عملياً

مع هذه القواعد التقديرية، حقق Indiana Jones: The Great Circle بمتوسط 19,6 ميلي ثانية للإطار عند طلب 9 GiB على بطاقة سعة 8 GiB. ومضاعفة الفائض رفعت تباين زمن الإطار بوضوح، مع قفزات تتجاوز 33,3 ميلي ثانية ومتوسط نحو 29,8 ميلي ثانية. كما أصبحت النواة تراعي امتداد VK_EXT_pageable_device_local_memory و‏vkSetDeviceMemoryPriorityEXT، ما يسمح للتطبيقات بترتيب ما هو أكثر أماناً للإفراغ؛ ويترجم vkd3d-proton واجهات الإقامة في D3D12 إلى هذه الآلية بالفعل. والعمل متاح أصلاً في قناتي Stable وPreview من SteamOS.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.