اقرأ في هذا المقال
- ما المقصود بالمعالجات المتعددة Multiprocessor
- تقنيات الجدولة متعددة المعالجات
- تقارب المعالج Processor Affinity
- توزيع الحمل في نظام المعالجات المتعددة Load Balancing
- مؤشرات الترابط المتعددة المتماثلة Symmetric Multithreading
تركز جدولة المعالجات المتعددة (Multiple processor scheduling) أو الجدولة متعددة المعالجات (multiprocessor scheduling) على تصميم وظيفة الجدولة للنظام والذي يتكون من “أكثر من معالج”، مع وجود معالجات متعددة في النظام، تصبح مشاركة الحمل ممكنة ولكنّها تجعل الجدولة أكثر تعقيدًا، حيث لا توجد سياسة أو قاعدة يمكن الإعلان عنها كأفضل حل جدولة لنظام بمعالج واحد، وبالمثل، لا يوجد أفضل حل للجدولة لنظام مع معالجات متعددة أيضًا، في هذا المقال، سنناقش النظام متعدد المعالجات جنبًا إلى جنب مع الكلمات الأساسية التي يجب مراعاتها أثناء جدولة النظام باستخدام معالجات متعددة.
ما المقصود بالمعالجات المتعددة Multiprocessor
متعدد المعالجات هو نظام به عدة معالجات، حسنًا، مع وجود معالجات متعددة، يصبح تصميم خوارزمية الجدولة أمرًا معقدًا، يمكن تصنيف النظام متعدد المعالجات إلى:
المعالجات المتعددة المقرونة أو الموزعة بشكل فضفاض Loosely Coupled or Distributed Multiprocessor
المعالجات المتعددة في النظام مستقلة عن بعضها البعض، لكل معالج في النظام ذاكرته الخاصة وقنوات الإدخال / الإخراج.
المعالج المتخصص وظيفيًا Functionally Specialized Processor
في هذا النظام، من بين مجموعة المعالجات المتعددة، يوجد معالج رئيسي وهو معالج للأغراض العامة (general-purpose processor)، يتحكم هذا المعالج الرئيسي في المعالجات المتخصصة الأخرى في النظام ويوفر الخدمات لهم.
المعالجات المتعددة المقترنة بإحكام Tightly Coupled Multiprocessors
في هذا النظام، تخضع المعالجات للتحكم المتكامل لنظام التشغيل، كل المعالجات في هذا النظام تشترك في الذاكرة المشتركة (common memory)، تسمّى هذه المعالجات أحيانًا بأنّها متجانسة لأنّها متطابقة من حيث وظائفها.
تقنيات الجدولة متعددة المعالجات
ملاحظة: يحتوي نظام المعالجة المتعددة الذي نتحدث عنه على معالجات متطابقة (identical) أو متجانسة (homogeneous) من حيث الوظيفة.
يمكن إجراء الجدولة متعددة المعالجات بطريقتين جدولة متعددة المعالجات غير متماثلة (asymmetric multiprocessor scheduling) وجدولة متعددة المعالجات متماثلة (symmetric multiprocessor scheduling):
في الجدولة متعددة المعالجات غير المتماثلة: يتم تعيين معالج واحد باعتباره المعالج الرئيسي الذي يتعامل مع جميع القرارات المتعلقة بالجدولة، جنبًا إلى جنب مع معالجة الإدخال / الإخراج وأنشطة النظام الأخرى، إنّه المعالج الرئيسي الذي يقوم بتشغيل كود أنظمة التشغيل والمعالجات التابعة الأخرى فقط تنفذ كود المستخدم.
في الجدولة متعددة المعالجات المتماثلة: تكون جميع المعالجات في النظام ذاتية الجدولة، يحتوي كل معالج في النظام إمّا على قائمته الخاصة من العمليات التي سيتم تنفيذها أو قد تكون هناك قائمة مشتركة من العمليات التي سيستخرج منها المعالجات العملية ليتم تنفيذها.
تقارب المعالج Processor Affinity
تقارب المعالج، أي أنّ العملية طورت تقاربًا للمعالج الذي تعمل عليه حاليًا، الآن دعونا نكتشف لماذا حدث هذا؟
ضع في اعتبارك في نظام معالجات متعددة أنّ العملية (P1) تعمل، دعنا نقول المعالج (PR1)، أثناء تشغيل العملية (P1)، سيتم تخزين البيانات التي تصل إليها مؤقتًا في ذاكرة التخزين المؤقت (C1) للمعالج (PR1)، نظرًا لهذا معظم عمليات الوصول إلى الذاكرة التي تتم بواسطة العملية، سيتم تلبية (P1) بواسطة ذاكرة التخزين المؤقت (C1) للمعالج (PR1)، الآن، ماذا لو تمّ ترحيل العملية (P1) من المعالج (PR1) إلى المعالج (PR2)؟
- أول شيء سيحدث هو أنّ محتوى ذاكرة التخزين المؤقت (C1) سيكون الآن غير صالح للمعالج (PR1).
- بعد ذلك، يجب ملء ذاكرة التخزين المؤقت (C2) للمعالج (PR2) بالبيانات التي يتم الوصول إليها بشكل متكرر بواسطة العملية (P1) بحيث يتم تلبية معظم طلب الوصول إلى الذاكرة بواسطة ذاكرة التخزين المؤقت (C2).
لتجنب الظروف المذكورة أعلاه، لا يسمح نظام المعالجة المتعددة المتماثل للعمليات بالانتقال من معالج إلى آخر وهذا ما يشار إليه باسم تقارب المعالج (processor affinity)، يمكن تعريف تقارب المعالج على أنّه تشابه العملية في المعالج الذي يعمل عليه حاليًا، يمكن تصنيف تقارب المعالج إلى نوعين من التقارب الناعم (soft affinity) والتقارب الصعب (hard affinity).
عندما يقوم النظام بتعيين إستراتيجية، لا تقوم بترحيل العملية من معالج إلى آخر ولكنّه لا يضمن ذلك، أي إذا سادت الحالة، فيمكنه ترحيل العملية من معالج إلى معالج آخر، وهذا ما يسمّى “التقارب الناعم”، عندما يتأكد النظام من عدم ترحيل أي عملية من معالج إلى آخر، يُطلق عليه اسم “التقارب الصعب”، يوفر نظام التشغيل مثل (Linux) بعض استدعاءات النظام التي تسمح للعملية بتحديد أنّه ليس من الضروري الانتقال من معالج إلى آخر.
توزيع الحمل في نظام المعالجات المتعددة Load Balancing
في نظام المعالجات المتعددة المتماثل، يجب أن يكون لكل معالج عبء عمل متساوٍ للاستفادة من المعالجات المتعددة في النظام، إذا كان عبء العمل غير متوازن بشكل صحيح بين جميع المعالجات في النظام، فقد يحدث أن ينتهي الأمر ببعض المعالجات في وضع الخمول وبعضها سيكون لديه عبء عمل كبير إلى جانب العمليات في انتظار وحدة المعالجة المركزية.
يمكن تنفيذ موازنة الحمل على النظام باستخدام معالجات متعددة، حيث يكون لكل معالج في النظام قائمة العمليات الخاصة به لتنفيذها، إذا كان لدى النظام قائمة مشتركة تحتوي على العمليات المطلوب تنفيذها، فلا داعي لموازنة الحمل، هذا لأنّه كلما أصبح المعالج خاملاً، فسيتم تحميل نفسه بالعملية في قائمة مشتركة، يمكن تحقيق موازنة الحمل بطريقتين، وهما: ترحيل الدفع (push migration) وترحيل السحب (pull migration):
- ترحيل الدفع (Push Migration): هنا تمّ تصميم مهمة تحافظ على فحص دوري لكل المعالجات لتحديد أي خلل في الحمل، إذا وجدت عدم توازن في الحمل، فإنّ المهمة تستخرج الحمل “العمليات” من معالج محمّل بشكل زائد وتعيينها إلى المعالج الخامل أو الأقل انشغالًا، يُطلق على هذا الدفع بالعمليات من المعالج المثقل إلى المعالج الأقل انشغالًا “ترحيل الدفع”.
- ترحيل السحب (Pull Migration): هنا يقوم المعالج الخامل نفسه باستخراج عملية انتظار من معالج محمّل أو مشغول يبدأ في تنفيذه لموازنة الحمل.
يمكن تنفيذ ترحيل الدفع والسحب بالتوازي، على سبيل المثال، يقوم نظام (Linux) بتشغيل ترحيل الدفع في كل (200) مللي ثانية، وكلما وجد المعالج خاملاً، يتم تشغيله، ويسحب خوارزمية الترحيل لسحب العمليات من المعالجات المحملة بشكل زائد، إذا تمت الملاحظة بعناية، فإنّ آلية موازنة الحمل تتخطى فوائد تقارب المعالج، إنّ دفع أو سحب عملية من معالج إلى آخر يؤدي إلى إبطال محتوى ذاكرة التخزين المؤقت كما رأينا في تقارب المعالج، لذلك لا توجد استراتيجية أو قاعدة مثالية لتحديد أفضل سياسة لجدولة نظام مع معالجات متعددة لتحقيق أقصى فائدة.
مؤشرات الترابط المتعددة المتماثلة Symmetric Multithreading
يحتوي نظام المعالجات المتعددة المتماثل على معالجات فعلية متعددة تسمح بتنفيذ العديد من مؤشرات الترابط بشكل متزامن، الفكرة الآن هي إنشاء وتوفير معالجات منطقية بدلاً من المعالجات المادية، يُطلق على مفهوم توفير المعالجات المنطقية للثريد (threads) اسم تقنية مؤشرات الترابط المتعددة المتناظرة (symmetric multithreading) والترابط الفائق لمعالجات (Intel) (hyper-threading technology).
يتيح لك مفهوم مؤشرات الترابط المتعددة والمتماثلة إنشاء العديد من المعالجات المنطقية على معالج مادي واحد، وجهة النظر تقول أنّ نظام التشغيل يحتوي على العديد من المعالجات المنطقية حيث يكون لكل معالج منطقي حالة معمارية خاصة به، كل معالج منطقي له سجلاته الخاصة للأغراض العامة وحالة الآلة، كل معالج منطقي قادر على التعامل مع المقاطعات ومشاركة موارد ذاكرته الفعلية.