الشرق الأوسط - وكالة أنباء إخباري
عندما نظر المجدول إلى النجوم: كيف كشف scx_horoscope عن مستقبل المجدولات المرنة لنواة لينكس
في أواخر عام 2024، ظهر مشروع على GitHub نجح في رسم الابتسامة على وجوه حتى أكثر مبرمجي الأنظمة خبرة. تحت اسم scx_horoscope، لم يكن مجرد مجدول مهام لنواة لينكس؛ بل كان أداة رائعة مصممة لضبط سلوك وحدة المعالجة المركزية بناءً على مواقع الكواكب، وأطوار القمر، وحتى التراجعات الفلكية. لقد لعب مبتكره، لوكاس زامبيري، ببراعة على المقولة القديمة لمديري الأنظمة بأن "الأنظمة تعمل وفقًا لأطوار القمر"، محولًا هذه الميم الفكاهية إلى كود وظيفي يتم تحميله بالفعل في النواة ويشارك في تخصيص وقت وحدة المعالجة المركزية. ومع ذلك، تحت هذا المظهر الغريب، كان يكمن إظهار لاختراق أكثر أهمية بكثير: دمج آلية sched_ext في نواة لينكس، مما يغير بشكل جذري طريقة إدارة الموارد ويبشر بعصر من المرونة غير المسبوقة في جدولة المهام.
تاريخيًا، كانت أي محاولة لتحسين أو تكييف مجدول مهام لينكس محفوفة بصعوبات جمة. المجدول هو قلب نظام التشغيل، حيث يحدد أي مهمة تحصل على الوصول إلى المعالج ومدة ذلك. مع كل نبضة مؤقت، يتخذ ثلاثة قرارات حاسمة: أي مهمة يتم تشغيلها على نواة متاحة، وكم من الوقت يجب أن تعمل دون إزاحة، وكيفية الموازنة بين الأهداف المتعارضة غالبًا مثل الحد الأدنى من التأخير للتطبيقات التفاعلية، والحد الأقصى من الإنتاجية لخوادم البناء، أو العزل الصارم للحاويات. في الماضي، كانت حتى التعديلات الطفيفة تتطلب تغيير كود النواة المتجانس. وهذا يعني شهورًا، وأحيانًا سنوات، من انتظار مراجعات التصحيحات، وضمها إلى الإصدار التالي، ثم توزيعها لاحقًا. ونتيجة لذلك، كانت النواة تحصل على خوارزمية عالمية ولكن غالبًا ما تكون حلًا وسطًا، مما يترك العديد من السيناريوهات المحددة بدون ضبط مثالي. أظهرت أمثلة مثل O(1) و Completely Fair Scheduler (CFS) تقدمًا، لكن عالميتها كانت دائمًا تأتي بثمن.
اقرأ أيضاً
تغير هذا الوضع بشكل جذري مع الإدراج الرسمي لفئة المجدولات sched_ext في الفرع الرئيسي لنواة لينكس مع الإصدار 6.12 في ديسمبر 2024. تتيح هذه الآلية نقل منطق الجدولة المعقد من النواة المرمزة بشكل صارم إلى سياسات قابلة للتحميل ديناميكيًا مكتوبة بلغة BPF (Berkeley Packet Filter). الآن، يمكن للمطورين ومديري الأنظمة تجربة خوارزميات تخصيص الموارد، وتكييفها مع احتياجاتهم الفريدة، ونشرها دون الحاجة إلى إعادة تجميع النواة أو الانتظار المطول للدمج في المصدر الأصلي. وهذا لا يمثل مجرد تطور، بل ثورة في إدارة المهام، مما يمهد الطريق لإنشاء مجدولات متخصصة وقابلة للتكيف بدرجة عالية.
تعتمد بنية sched_ext على مبادئ واضحة لتقسيم المسؤوليات. تحتفظ النواة بالوظائف بالغة الأهمية: إدارة حالة المهام، وبدائيات الإرسال الأساسية في شكل قوائم انتظار (DSQ)، وآليات الترحيل بين النوى، والأهم من ذلك، نظام الأمان. في حالة حدوث عطل أو تشغيل غير صحيح لبرنامج مجدول BPF خارجي، تبدأ النواة تلقائيًا إجراء الإجهاض، وتعيد جميع المهام إلى الفئة القياسية SCHED_NORMAL. وهذا يضمن تحملًا قويًا للأخطاء، ويمنع انهيار النظام بالكامل. ومع ذلك، من المهم ملاحظة أن آلية التراجع تحمي فقط من الأعطال الكارثية، وليس من الأخطاء المنطقية في استراتيجيات الجدولة نفسها. إذا قامت سياسة، على سبيل المثال، بتخصيص فترات زمنية قصيرة جدًا باستمرار أو تصنيف المهام بشكل غير صحيح، فسيستمر النظام في العمل، ولكن بأداء متدهور بشكل كبير.
يتم تسليم منطق اتخاذ القرار – تصنيف المهام، وحساب الرتبة الداخلية (النقاط)، وتحديد مدة الفترة الزمنية – بالكامل إلى برنامج BPF يتم تحميله من مساحة المستخدم. وهذا يوفر مرونة غير مسبوقة. تتكشف دورة حياة المهمة تحت إدارة sched_ext على النحو التالي: عند استيقاظ مهمة ما، تُخطر النواة السياسة عبر خطاف enqueue(). تقوم السياسة بتحليل المهمة (أنماط استيقاظها، استخدام الموارد، الانتماء إلى المجموعات) وتقرر مكان وضعها. عندما تصبح النواة حرة، يتم استدعاء خطاف dispatch()، وتسترد السياسة مهمة من قائمة الانتظار، وتمررها إلى النواة عبر scx_bpf_dispatch()، مع تحديد معرف المهمة ومدة الفترة الزمنية بالنانو ثانية. يمكن للسياسة أيضًا بدء ترحيل المهام بين النوى عبر scx_bpf_kick_cpu() لموازنة الحمل أو تحسين محلية ذاكرة التخزين المؤقت.
مشروع scx_horoscope، على الرغم من سخريته، هو عرض حي لهذه الإمكانيات. يستخدم مكتبة astro لحساب المواقع الكوكبية المركزية وأطوار القمر بشكل دوري (كل 60 ثانية). لا تمارس نقاط البيانات الفلكية هذه تأثيرًا ماديًا على وحدة المعالجة المركزية، ولكنها تعمل كمعاملات للمنطق الداخلي للمجدول. يتم تصنيف المهام بناءً على معايير موضوعية مثل وجود سياسة الوقت الفعلي، أو أنماط الاستيقاظ، أو عضوية cgroup. بعد ذلك، يتم تطبيق التصحيحات المحسوبة من "الأولوية الفلكية" على الفترة الزمنية الأساسية. على سبيل المثال، قد توفر علامات زودياك معينة معاملات تعزيز أو تقليل، بينما قد يؤدي تراجع الكوكب إلى خصم بنسبة 50٪ من الفترة الزمنية للمهام داخل نطاقه. من الأهمية بمكان فهم أن هذا مقياس سياسة داخلي يؤثر فقط على مدة الفترة الزمنية وترتيب الاختيار من قوائم انتظار الإرسال؛ فهو لا يغير أولويات النواة (مثل nice، prio، أو SCHED_FIFO)، والتي تستمر في التعامل معها بشكل مستقل بواسطة النواة.
أخبار ذات صلة
- إيطاليا تدعم انضمام السعودية لبرنامج المقاتلات الحربية، حسبما صرحت رئيسة الوزراء ميلوني
- مستشارو اللقاحات الفيدراليون يستهدفون لقاحات كوفيد ولقاحات النساء الحوامل
- السيادة الرقمية (2/3): هل يمكن لشركات أوروبا الصمود بدون شركات التكنولوجيا الأمريكية الكبرى؟
- بكتيريا أمراض اللثة قد تعزز نمو السرطان: دراسة على الفئران تكشف عن صلة مباشرة
- إل باسو تستعد للسوبر بول LX: أبرز الحانات الرياضية تستعد لحدث عام 2026
يشير مؤلف scx_horoscope صراحةً إلى أن المشروع مخصص لأغراض تعليمية وترفيهية فقط. الحسابات الفلكية حقيقية، ويعمل المجدول بثبات داخل النواة، لكن استخدام علم الفلك لتخصيص وقت وحدة المعالجة المركزية غير مدعوم علميًا. إنه عرض رائع لقدرات sched_ext المعمارية، وليس توصية للاستخدام في الإنتاج. scx_horoscope هو مجرد مشروع واحد ضمن نظام scx البيئي الأوسع، حيث تعالج التطبيقات الأخرى، مثل scx_lavd (Latency-Aware Virtual Deadline)، مشاكل عملية، بالتركيز، على سبيل المثال، على تفاعلية أنظمة سطح المكتب. وهكذا، فإن المجدول "الفلكي" لم يكتفِ بإحداث الابتسامة فحسب، بل أوضح أيضًا بوضوح كيف يمكن للمرونة التي أدخلتها sched_ext أن تفتح آفاقًا جديدة تمامًا لتحسين وإدارة الموارد داخل نواة لينكس.