تعتمد معظم التطبيقات الحديثة على تنفيذ آلاف عمليات الإدخال والإخراج (I/O)، مثل قراءة الملفات أو استقبال البيانات من الشبكة. ومع ازدياد عدد هذه العمليات، تصبح الطرق التقليدية أقل كفاءة بسبب كثرة الانتقال بين التطبيق ونواة نظام التشغيل.
ولهذا قدم Linux تقنية io_uring، التي أحدثت نقلة كبيرة في أداء التطبيقات عالية الأحمال.
io_uring هو واجهة حديثة لإدارة عمليات الإدخال والإخراج في Linux، تعتمد على حلقتين دائريتين (Ring Buffers) مشتركتين بين التطبيق والنواة.
يسمح ذلك بإرسال الطلبات واستقبال النتائج بسرعة أكبر مع تقليل عدد استدعاءات النظام (System Calls).
يتكون io_uring من حلقتين:
يضع التطبيق فيها طلبات القراءة أو الكتابة.
تضع النواة فيها نتائج العمليات بعد تنفيذها.
وبهذه الطريقة، يتم تبادل المعلومات بكفاءة دون الحاجة إلى استدعاءات متكررة.
تقليل الزمن اللازم لتنفيذ عمليات I/O.
تقليل عدد عمليات الانتقال بين التطبيق والنواة.
تنفيذ عدة عمليات بالتوازي دون حظر التطبيق.
مناسب للخوادم التي تتعامل مع آلاف الطلبات في الثانية.
يُستخدم epoll لمراقبة جاهزية الاتصالات، بينما يركز io_uring على تنفيذ عمليات الإدخال والإخراج نفسها بكفاءة أعلى.
وفي كثير من التطبيقات الحديثة يمكن استخدام التقنيتين معًا لتحقيق أفضل أداء.
ليس بالكامل، لكنه أصبح الخيار المفضل في كثير من التطبيقات الحديثة.
يمكن استخدامه، لكن أكبر استفادة تظهر في التطبيقات ذات الأحمال المرتفعة.
يمثل io_uring تطورًا كبيرًا في طريقة تنفيذ عمليات الإدخال والإخراج داخل Linux، حيث يجمع بين الأداء العالي، وتقليل استهلاك الموارد، وزيادة قابلية التوسع.