تقارب المعالج: تحسين أداء الحوسبة عبر تثبيت العمليات

تقارب المعالج (Processor Affinity)

في علوم الحاسوب، يُعرف تقارب المعالج (Processor Affinity)، ويسمى أيضاً تثبيت المعالج (CPU Pinning) أو تقارب ذاكرة التخزين المؤقت (Cache Affinity)، بأنه القدرة على ربط أو فك ربط عملية أو خيط (Thread) بوحدة معالجة مركزية (CPU) محددة أو مجموعة من المعالجات. يضمن ذلك تنفيذ العملية أو الخيط فقط على المعالج المخصص بدلاً من السماح لنظام التشغيل بتوزيعه على أي معالج متاح.

كيف يعمل تقارب المعالج؟

يمكن اعتبار هذه الميزة تعديلاً على خوارزمية جدولة الطابور المركزي الأصلية في أنظمة التشغيل التي تدعم تعدد المعالجات المتماثل (SMP). في هذا النظام، يحمل كل عنصر في طابور المهام علامة تشير إلى "المعالج القريب" له. عند تخصيص الموارد، يتم إعطاء الأولوية لتخصيص المهمة إلى معالجها القريب لضمان استمرارية الأداء.

مرونة خوارزميات الجدولة

تختلف تطبيقات خوارزميات الجدولة في مدى التزامها بتقارب المعالج. في بعض الحالات، قد تسمح بعض الأنظمة بنقل المهمة إلى معالج آخر إذا كان ذلك سيؤدي إلى كفاءة أعلى. على سبيل المثال، إذا كانت هناك مهمتان كثيفتان (أ و ب) مرتبطتان بمعالج واحد بينما يظل معالج آخر غير مستخدم، فقد يقوم المجدول بنقل المهمة (ب) إلى المعالج الثاني لزيادة الاستفادة من موارد النظام. في هذه الحالة، تكتسب المهمة (ب) تقارباً مع المعالج الثاني، بينما تظل المهمة (أ) مرتبطة بالمعالج الأصلي.

قناع التقارب (Affinity Mask)

في معظم أنظمة التشغيل، يتم التعبير عن مجموعة المعالجات التي يُسمح للخيط أو العملية بالعمل عليها من خلال ما يسمى قناع التقارب (Affinity Mask)، وهو عبارة عن قناع بتات (Bit Mask) يتوافق مع عدد النوى الموجودة في النظام.

الغرض من استخدام تقارب المعالج

هناك عدة أسباب تقنية تدفع المطورين ومديري الأنظمة إلى استخدام تقارب المعالج، وأبرزها:

1. محلية ذاكرة التخزين المؤقت والذاكرة

قد يتم مقاطعة تنفيذ الخيط بواسطة مجدول نظام التشغيل لإفساح المجال لبرامج أو خيوط أخرى. إذا تم إرسال الخيط لاحقاً إلى المعالج الذي كان يعمل عليه سابقاً، فقد تظل هناك بعض البيانات في ذاكرة التخزين المؤقت (CPU Cache) التي يمكن إعادة استخدامها، مما يقلل من عدد مرات "إخفاق التخزين المؤقت" (Cache Misses).

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

2. تعدد الخيوط المتزامن (SMT)

في المعالجات التي تدعم تعدد الخيوط المتزامن (مثل تقنية Hyper-Threading من Intel)، تتشارك الخيوط (المعالجات المنطقية) الموجودة على نواة مادية واحدة في ذاكرات التخزين المؤقت L1 و L2. ومن منظور محلية البيانات، تعتبر هذه الخيوط متطابقة.

3. أنظمة الوصول غير الموحد للذاكرة (NUMA)

في أنظمة NUMA، تظهر مشكلة مشابهة، ولكن التأخير لا ينتج عن إخفاقات L1/L2، بل عن إخفاقات L3 والوصول إلى الذاكرة عبر العقد (Cross-node memory access). من خلال حصر جميع خيوط البرنامج في نفس عقدة NUMA (أو على الأقل في نفس مقبس المعالج)، يمكن ضمان مشاركة ذاكرات التخزين المؤقت L3، مما يقلل من زمن الوصول ويزيد من سرعة نقل البيانات.

أسئلة شائعة

ما هو تقارب المعالج (Processor Affinity)؟

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

متى يكون تقارب المعالج مفيداً؟

يكون مفيداً جداً في التطبيقات التي تتطلب أداءً عالياً واستهلاكاً كثيفاً للمعالج، مثل برامج الرندرة (Rendering) أو الحسابات العلمية، حيث يقلل من فقدان البيانات في ذاكرة التخزين المؤقت.

هل يؤدي تقارب المعالج دائماً إلى تحسين الأداء؟

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