في مؤتمر Linux Plumbers Conference 2020 ، تحدث مطورو Microsoft عن مشروعهم التجريبي - تحسين Linux kernel لمعالجات خادم ARM. قدم مدير تطوير البرمجيات جان بيرمان عرضًا تقديميًا.
وبحسب المختص بدأ المشروع بناء على طلب داخلي للشركة. يتم استخدام Linux بالفعل في مشاريع مثل Azure Cloud و Azure Sphere ونظام Windows الفرعي لنظام Linux. تم تكليف فريق Bierman بتعظيم أداء الخدمة السحابية على Linux باستخدام معالجات ARM 64 بت أو x86. تم السماح للمطورين بتجميع النواة لنظام التشغيل بمعلماتهم وأعلامهم.
التوزيع الأصلي هو Ubuntu 19.10 مع GCC 9.2.1 و binutils 2.33 و kernel 5.3 مثبتة مسبقًا. معالج الخادم - 64 بت ARM Marvell Thunder X2. بعد العصف الذهني ، قرر الفريق استخدام تحسينات LTO و PGO لبناء النواة.
يؤدي تحسين التنميط (PGO أو FDO) وتحسين وقت الاتصال (LTO أو LTCG) إلى إبطاء عملية الإنشاء بشكل كبير ويتطلبان المزيد من ذاكرة الوصول العشوائي حتى يعمل المترجم ، ولكن من الناحية النظرية ، يؤدي ذلك إلى زيادة سرعة تنفيذ الأوامر بنسبة 10-20٪. نادرًا ما يستخدم المطورون PGO ، وقد تم مؤخرًا استخدام LTO لبناء نواة وحزم أخرى. في السابق ، كان المطورون حذرين من استخدام تحسين وقت الارتباط بسبب مشكلات التوافق في دول مجلس التعاون الخليجي ومجمعي LLVM. لجأ فريق Birman إلى مطور Linux kernel ذي الخبرة Andy Kleen للحصول على المساعدة ، والذي أصدر تصحيحًا لجعل LTO يعمل بشكل صحيح مع معالجات ARM. لكي يعمل PGO ، درس المطورون الوثائق وجعلوها مستقرة عن طريق التجربة والخطأ.
بعد الانتهاء من البناء الأساسي ، اختبر الفريق الأداء على نظام إدارة قاعدة بيانات NoSQL مفتوح المصدر المقيم في redis. بعد تنفيذ أوامر مختلفة ، أبلغ المطورون عن زيادة سرعة تنفيذ الأوامر بنسبة 5-20٪. البيانات التي تم الحصول عليها من اختبار معياري redis الداخلي.
بالمناسبة ، منذ وقت ليس ببعيد ، أصدرت Microsoft تحديث KB4566116 لنظام التشغيل Windows 10. يضيف التحديث دعمًا لنظام Windows الفرعي لنظام Linux 2 (WSL 2) في إصداري 1909 و 1903 من نظام التشغيل. هذا يجعل من الممكن استخدام نواة Linux كاملة. في WSL2 ، لا يعد جزءًا من Windows افتراضيًا ، ولكن يتم تحميله ديناميكيًا وتحديثه باستخدام الأدوات المضمنة في نظام التشغيل.