Fast Kernel Headers ، مجموعة من التصحيحات التي تسرع تجميع النواة بنسبة 50-80٪

إنغو مولنار ، مطور Linux kernel معروف و مؤلف برنامج جدولة المهام CFS اقترح لمناقشة القائمة البريدية لتطوير نواة لينكس عددًا من التصحيحات ، مما يؤثر على أكثر من نصف جميع الملفات في مصدر النواة ويوفر زيادة عامة في سرعة إعادة بناء النواة بنسبة 50-80٪ اعتمادًا على التكوين.

تم تنفيذ التحسين ملحوظة من حيث أنها مرتبطة بإضافة أكبر مجموعة تغييرات في تاريخ تطوير النواة: شرعوا في تضمين 2297 تصحيحًا في وقت واحد ، مع تغيير أكثر من 25 ألف ملف.

مكاسب في الأداء يتم تحقيقه عن طريق تغيير طريقة معالجة ملف الرأس. وتجدر الإشارة إلى أنه خلال ثلاثين عامًا من تطوير النواة ، اتخذت حالة ملفات الرأس شكلاً كئيبًا بسبب وجود عدد كبير من التبعيات المتبادلة بين الملفات.

استغرقت إعادة هيكلة ملفات الرأس أكثر من عام و تطلبت إعادة تصميم كبيرة للتسلسل الهرمي والتبعيات. أثناء إعادة الهيكلة ، تم العمل على فصل تعريفات الأنواع وواجهات برمجة التطبيقات لأنظمة النواة الفرعية المختلفة.

يسعدني أن أعلن عن الإصدار العام الأول من مشروع "Fast Kernel Headers" الجديد الذي أعمل عليه منذ أواخر عام 2020 ، وهو إعادة صياغة شاملة لتسلسل Linux kernel h الهرمي وتبعيات الترويسة ، بهدف مزدوج:

- تسريع بناء النواة (كل من أوقات البناء المطلقة والتزايدية)

- نوع فصل النظام الفرعي وتعريفات API عن بعضها البعض

كما يعلم معظم مطوري kernel ، هناك حوالي 10,000 رأس .h رئيسي في Linux kernel ، في include / and arch / * / include / hierarchies. على مدار الثلاثين عامًا الماضية ، تطورت إلى مجموعة معقدة ومؤلمة من التبعيات المتبادلة التي نسميها بمودة "التبعية الجحيم".

من بين التغييرات التي تم إجراؤها: فصل ملفات الرأس عالية المستوى عن بعضها البعض ، استبعاد الوظائف المضمنة التي تربط ملفات الرأس ، وتعيين ملفات الرأس للأنواع وواجهات برمجة التطبيقات ، وتوفير مجموعة منفصلة من ملفات الرأس (تحتوي حوالي 80 ملفًا على تبعيات غير مباشرة تتداخل مع التجميع ، ويتم عرضها من خلال ملفات رأس الملفات الأخرى) ، والإضافة التلقائية للتبعيات إلى ملفات ".h" و ".c" ، التحسين خطوة بخطوة لملفات الرأس ، استخدام الوضع "CONFIG_KALLSYMS_FAST = y" ، الدمج الانتقائي لملفات C في كتل التجميع لتقليل عدد ملفات الكائنات.

نتيجة لذلك ، سمح العمل المنجز بتقليل حجم ملفات الرأس المعالجةفي مرحلة ما بعد المعالجة بمقدار 1-2 أوامر من حيث الحجم.

  • على سبيل المثال ، قبل التحسين ، أدى استخدام ملف الرأس "linux / gfp.h" إلى إضافة 13543،303 سطرًا من التعليمات البرمجية وإدراج 181 ملفًا رئيسيًا تابعًا ، وبعد التحسين تم تقليل الحجم إلى 26 سطرًا و XNUMX ملفًا تابعًا.
  • مثال آخر: المعالجة المسبقة لملف "kernel / pid.c" غير المصحح يربط 94 ألف سطر من التعليمات البرمجية ، معظمها غير مستخدم في pid.c. سمح لنا تقسيم ملفات الرأس بتقليل كمية التعليمات البرمجية التي تمت معالجتها ثلاث مرات ، مما أدى إلى تقليل عدد الأسطر التي تمت معالجتها إلى 36.

عندما أعيد بناء النواة بالكامل باستخدام الأمر "make -j96 vmlinux" في نظام الاختبار ، أظهر الترقيع انخفاضًا في وقت التجميع لفرع v5.16-rc7 من 231,34 إلى 129,97 ، 15,5 ثانية (من 27,7 إلى XNUMX بناء لكل ساعة) وزيادة كفاءة استخدام وحدة المعالجة المركزية الأساسية أثناء الإنشاء.

مع التجميع المتزايد ، يكون تأثير التحسين أكثر وضوحًا: لقد تم تقليل الوقت اللازم لإعادة بناء النواة بعد إجراء تغييرات على ملفات الرأس بشكل كبير (من 112٪ إلى 173٪ ، اعتمادًا على ملف الرأس الذي تم تغييره).

لا تتوفر التحسينات حاليًا إلا لبنيات ARM64 و MIPS و Sparc و x86 (32 بت و 64 بت).

ناعم إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.