أخبار ar.wedoany.com، صمم المهندس فينغنان تشانغ (Fengnan Chang) من شركة بايت دانس (ByteDance) خوارزمية لنواة لينكس تعمل على تبسيط مسار معالجة الإدخال/الإخراج المباشر (Direct I/O)، وذلك لمعالجة اختناق الأداء في أقراص NVMe الصلبة من الجيل الخامس (PCIe Gen5) عند إجراء عمليات القراءة العشوائية بحجم 4 كيلوبايت. تم دمج هذا التصحيح (patch) في مستودع Git الخاص بالنظام الفرعي VFS، ومن المتوقع إطلاقه رسمياً مع إصدار لينكس 7.3 في نهاية العام الحالي.
عند إجراء عمليات القراءة العشوائية بحجم 4 كيلوبايت على أقراص NVMe الصلبة من الجيل الخامس (PCIe Gen5)، اكتشف المهندسون أن السبب الجذري لانخفاض الإنتاجية يكمن في طبقة نظام التشغيل. تستهلك نواة لينكس موارد وحدة المعالجة المركزية (CPU) بشكل كبير عند معالجة كل طلب صغير، وكانت تكاليف النظام الفرعي IOmap بارزة بشكل خاص. يتولى IOmap مهمة تعيين العناوين المنطقية للملفات إلى الكتل المادية على القرص أثناء الإدخال/الإخراج المباشر، إلا أن تخصيص الذاكرة للهياكل المساعدة وصيانة آلة الحالة المعقدة يستهلكان قدراً كبيراً من الموارد الحاسوبية، مما يشكل عنق الزجاجة الرئيسي الذي يحد من الإنتاجية العالية.
يعمل مسار الإدخال/الإخراج المباشر المبسط (simple dio path) الذي صممه فينغنان تشانغ على تقليل زمن الوصول (latency) من خلال إزالة العمليات كثيفة الاستخدام للموارد. تتطلب هذه الآلية أن يستوفي الطلب أربعة شروط في وقت واحد: أن يكون نوع العملية قراءة فقط؛ وألا يتجاوز حجم البيانات المقروءة حجم كتلة نظام الملفات (عادةً 4 كيلوبايت)؛ وألا يكون الملف الهدف مشفراً؛ وأن يكون نظام الملفات إما EXT4 أو XFS. ستتجاوز الطلبات المستوفية للشروط مرحلتي آلة الحالة وتخصيص الذاكرة الديناميكي للنظام الفرعي IOmap، ليتم توجيهها عبر أقصر مسار مباشرةً إلى الطبقة السفلية من مكدس الإدخال/الإخراج (I/O stack) لنواة لينكس.
أظهرت الاختبارات التي أجريت بالاقتران مع النظام الفرعي io_uring أنه عند إجراء عمليات القراءة العشوائية بحجم 4 كيلوبايت على نظامي الملفات EXT4 وXFS، ارتفع الأداء من 1.92 مليون IOPS إلى 2.19 مليون IOPS، أي بزيادة تبلغ حوالي 14%. حالياً، تمت مراجعة هذا التصحيح، المعروف باسم "IOmap Simple DIO"، ودمجه في فرع vfs-7.3.iomap من مستودع Git الخاص بالنظام الفرعي VFS. سيتم تقديم الكود إلى الفرع الرئيسي (mainline) الخاص بلينوس تورفالدس (Linus Torvalds) لإدراجه في نافذة دمج لينكس 7.3.










