ناقشنا العام الماضي هنا في المدونة اقتراحًا من شركة بايت دانس (مبتكرة تطبيق تيك توك) لأداة تُدعى باركر (النواة المُقسّمة)، وهي تقنية تجريبية تسمح بتشغيل عدة نوى لينكس في وقت واحد. والآن، بعد مرور أكثر من عام ونصف، تم إصدار أداة عامة جديدة من المشروع بعنوان "لينكس متعدد النوى (mklinux-v7.0-mk2)".
يُقدّم هذا التطوير نسخةً مُخصصةً من نواة لينكس تُتيح تشغيل عدة نسخ مستقلة من النواة في وقت واحد على خادم فعلي واحد. وبفضل تشغيلها مباشرةً على النظام الأساسي، تُغني هذه التقنية تمامًا عن الحاجة إلى برامج إدارة الأجهزة الافتراضية أو طبقات المحاكاة الافتراضية، مما يمنح كل نسخة وصولاً مباشرًا إلى الذاكرة ووحدة المعالجة المركزية والأجهزة المُخصصة لها.
استنادًا إلى نواة لينكس 7.0 التي صدرت مؤخرًا، يتيح هذا المشروع تفعيل هذه الميزة عبر مُعامل التكوين CONFIG_MULTIKERNEL . في حال تعطيل هذا الخيار، ستكون النواة الناتجة مطابقة تمامًا لنواة لينكس 7.0 القياسية وتعمل وفقًا لها. يدعم الإصدار الأول (v7.0-mk2) حاليًا معمارية x86_64 حصريًا ، وهو مصمم لسد الفجوة في الأداء والأمان بين المحاكاة الافتراضية التقليدية وعزل الحاويات.
العزل دون عقوبة على الأداء
تكمن أكبر مشكلة في المحاكاة الافتراضية في "ضريبة" الأداء التي تفرضها برامج إدارة الأجهزة الافتراضية. في المقابل، يُلغي نظام لينكس متعدد النواة عمليات الخروج من الآلة الافتراضية ، وترجمة الذاكرة من المستوى الثاني، والعبء الإضافي الناتج عن نماذج الأجهزة.
وفقًا لبيانات الأداء المنشورة بعد اختبارها على معالجات Xeon Gold 5418Y (Sapphire Rapids)، يُظهر نظام النواة المتعددة زيادةً ملحوظةً في سرعة التنفيذ مقارنةً بأنظمة KVM الافتراضية. فعلى سبيل المثال، أصبح تبديل السياق بين العمليات أسرع بمقدار 2,5 مرة، وانخفض زمن استجابة الأنابيب بأكثر من النصف (2,18 مرة)، وتحسنت سرعة استجابة استدعاءات النظام الأساسية، مثل عمليات القراءة والكتابة، بأكثر من 25%.
بالمقارنة مع حاويات Docker التقليدية، توفر Multikernel حماية فائقة، لأن الحاويات تشترك في نفس نواة النظام المضيف، وبالتالي فإن أي ثغرة أمنية على مستوى النواة، أو عطل مفاجئ، أو تشبع في الأقفال الداخلية، يؤثر على جميع الحاويات. في بيئة Multikernel، لكل بيئة نواة مستقلة خاصة بها ؛ أي أنه في حال تعرض إحدى الحاويات لعطل حرج، تستمر الحاويات الأخرى في العمل دون تأثر، مما يضمن بيئة معزولة مثالية لتشغيل كل شيء بدءًا من خوادم الويب وصولًا إلى أحمال عمل تدريب الذكاء الاصطناعي المكثفة (التعلم الآلي) على نفس الجهاز.
التعيين والتنسيق الديناميكي باستخدام Kerf
يعمل نظام لينكس متعدد النواة باستخدام نواة رئيسية تدير مجموعة كبيرة من الموارد (وحدات المعالجة المركزية، وذاكرة الوصول العشوائي، وأجهزة PCI). وباستخدام بنية شجرة الأجهزة الموجودة (المتاحة في المسار /sys/fs/multikernel/)، تقوم النواة بتقسيم هذه المجموعة وتشغيل "نوى فرعية" عبر النظام الفرعي الأصلي kexec_file_load(). وبفضل ميزة التوصيل السريع في لينكس، يمكن نقل هذه الموارد ديناميكيًا بين النسخ دون الحاجة إلى إعادة تشغيل الخادم، مما يضمن أداءً متوقعًا وقابلًا للتعديل في الوقت الفعلي.
لإدارة هذا النظام البيئي، قدّم المطورون أداة سطر الأوامر Kerf . تُدير هذه الأداة دورة حياة النسخ بالكامل، بالاعتماد على وحدات مفتوحة المصدر مُكمّلة. إحدى هذه الوحدات هي Lazy CMA، التي تُخصّص ذاكرة فعلية متجاورة أثناء التشغيل دون الحاجة إلى أي تهيئة مسبقة قبل بدء التشغيل.
أما الركن الآخر فهو DAXFS، وهي وحدة تسمح للمثيلات بمشاركة أنظمة الملفات مباشرة في الذاكرة؛ وبفضل ذلك، يمكن لـ Kerf تشغيل نواة فرعية مباشرة داخل صورة حاوية Docker، والاستفادة من نظام الملفات الخاص بها دون الحاجة إلى طبقات المحاكاة واستخدام واصفات الذاكرة للربط الشبكي دون نسخ البيانات.
تجدر الإشارة إلى أن هذا الإصدار الأول قد اجتاز اختبارات استقرار مكثفة في ظل بنى الترحيل ذات 5 مستويات وKASLR النشط، مما يدل على أن استعادة الموارد آمنة تمامًا حتى عند تعطل نواة فرعية.
من خلال السماح بتقسيم أحمال العمل التي تصادمت بسبب أقفال النظام (مثل عدد كبير من عمليات إلغاء الارتباط أو إعادة التسمية على نفس ذاكرة التخزين المؤقت) عبر نوى منفصلة متوافقة مع مقابس المعالج الفعلية، يوضح نظام التشغيل Multikernel Linux القدرة على التوسع بما يتجاوز حاجز الأداء الذي تفرضه نواة متجانسة واحدة، مما يفتح حقبة جديدة في توحيد الخوادم والحوسبة السحابية عالية الأداء.
وأخيرًا، إذا كنت مهتمًا بمعرفة المزيد، يمكنك العثور على التفاصيل في الرابط التالي.