تخيل أن لديك خادم ويب يستقبل مئات الآلاف من الاتصالات في الوقت نفسه. إذا حاول النظام فحص كل اتصال باستمرار لمعرفة ما إذا كان يحتوي على بيانات جديدة، فسيستهلك المعالج وقتًا هائلًا دون فائدة.
لهذا طوّر نظام Linux آلية Epoll، التي أصبحت حجر الأساس في بناء الخوادم عالية الأداء مثل Nginx وHAProxy.
Epoll هو واجهة برمجية (API) في Linux تتيح للتطبيق مراقبة عدد كبير جدًا من مقابس الشبكة (Sockets) ومعرفة أيها أصبح جاهزًا للقراءة أو الكتابة، دون الحاجة إلى فحص جميع الاتصالات بشكل متكرر.
يعتمد Epoll على نموذج الإشعارات بالأحداث (Event Notification)، حيث يخبر النظام التطبيق فقط عند حدوث تغيير يستحق المعالجة.
تمر العملية بثلاث خطوات رئيسية:
بهذا الأسلوب لا يهدر التطبيق وقته في فحص اتصالات خاملة.
لا يتم فحص جميع الاتصالات في كل دورة.
يمكنه التعامل مع مئات الآلاف أو ملايين الاتصالات.
يتم التعامل مع الأحداث فور حدوثها.
لا يحتاج إلى إنشاء هياكل بيانات ضخمة لكل عملية فحص.
| Epoll | Select |
|---|---|
| مناسب لعدد ضخم من الاتصالات | مناسب للأعداد الصغيرة |
| يعتمد على الأحداث | يعتمد على الفحص المستمر |
| أكثر كفاءة في الأداء | يستهلك موارد أكثر مع زيادة الاتصالات |
لا، فهو خاص بأنظمة Linux، بينما توفر الأنظمة الأخرى بدائل مثل kqueue في BSD وmacOS.
لا، تظهر فائدته بشكل أساسي في التطبيقات التي تدير أعدادًا كبيرة من الاتصالات المتزامنة.
يُعد Epoll أحد أهم أسباب قدرة Linux على تشغيل خوادم الويب الحديثة بكفاءة عالية، حيث يقلل استهلاك الموارد ويحسن التعامل مع أعداد ضخمة من الاتصالات.