في هذه الصفحة
ما هو الحجم الأمثل والمناسب للـ Thread Pool في المهمة التي أود القيام بها ؟
كان يتردد هذا السؤال علي كثيرًا أثناء عملي في مختلف الأنواع من المهام كمعالجة تدفق البيانات أو ما يعرف بالـ Data Stream Processing أو تنفيذ بعض المهام بشكل متوازٍ (في نفس الوقت) للتحسين من أداء تنفيذها. وهو ما يعرف بالـ Parallel Processing. وأكاد أجزم أن هنالك الكثير ممن راودهم هذا السؤال أثناء عملهم في مختلف المهام.
في هذا المقال سنتناول بشكل بسيط وسهل الإجابة عن هذا السؤال. وستعرفون أن أهم العوامل التي تؤثر في اختيارك لحجم الـ Thread Pool بشكل أساسي هم:
١- عدد الـ CPU Cores التي يستطيع ويُسمَح للبرنامج الخاص بك استعمالها والحصول عليها.
٢- طبيعة المهمة التي تريد القيام بها إذا ما كانت مهمة تعتمد بشكل كبير على المدخلات والمخرجات أو ما يعرف بـ I/O Bound Task، أم إذا كانت مهمة تعتمد بشكل قوي على المعالجات وهو ما يعرف بالـ CPU Intensive Task.
هنالك أيضًا بعض العوامل التي لم يتم ذكرها، ولكن يمكننا أن نعتمد على ما سبق بشكل أساسي قبل الإجابة عن هذا السؤال.
ما هو الحجم المثالي للـ Thread Pool ؟
ليس هناك حجم مثالي للـ Thread Pool؛ فالأمر كله يعتمد على نوع المهمة التي تود القيام بها بالإضافة الى بعض المقايضات Trade-Offs التي عليك أن تفاضل بينها.
ما هي الـ CPU CORES ؟
الـ CPU Cores هي تمثل الأنوية التي تتواجد داخل وحدة المعالجة المركزية أو ما يعرف بالـCPU، وحيث إنه منذ قديم الزمن كانت هذه الوحدة تضم فقط نواة واحدة، فلم يكن باستطاعتها إلا أن تقوم بعمل مهمة واحدة فقط في كل مرة. أما الآن فنحن نسمع عن العديد من الأنوية Multi-Core CPU. وبهذا الشكل أصبح باستطاعتنا الاستفادة من عمل أكثر من مهمة في كل مرة بدلًا من مهمة واحدة. ومن هنا نستطيع الاعتماد على تلك الـ Cores في تسريع وتحسين الأداء عن طريق الاستفادة من الـ Parallelism.
هذه الصورة تمثل الفرق بين الـ Single Core والـQuad Core: