الخلاصة

  • يحدث قفل الاستقبال الحي عندما تستهلك مقاطعات الوصول وقت المعالج الذي تحتاجه طبقات البروتوكول أو الإرسال أو التطبيق؛ تعمل الآلة، لكن معدل التسليم المفيد قد يصبح صفراً.
  • جمع Mogul وRamakrishnan بين مقاطعة توقظ الاقتراع، وخدمة دورية عادلة، وحصة لكل استدعاء، وإسقاط مبكر، وتغذية راجعة من الطوابير اللاحقة، وحد لزمن المعالج. الاقتراع بلا حصة فشل أيضاً.
  • جاءت الأرقام من DECstation بطيء أحادي المعالج وشبكة Ethernet بسرعة 10 ميغابت/ثانية. حصة خمس إلى عشر حزم كانت نتيجة محلية وليست وصفة عامة.

كانت الآلة تعمل ولم يكن العمل يصل

تمنح المقاطعة حدث العتاد حق التقدم على العمل العادي. عند قلة الوصول تخفّض الكمون. أما حين تتجاوز الحزم قدرة السلسلة كلها، فقد تمنع الأولوية المراحل اللاحقة من إنهاء ما قبله المدخل.

في نموذج مشتق من 4.2BSD، كان المشغل يسحب الحزمة من الواجهة ويضعها في طابور IP، ثم تعمل معالجة البروتوكول لاحقاً بأولوية أدنى. يستطيع وصول جديد مقاطعتها. وإذا امتلأ الطابور، تواصل الآلة استهلاك الدورات في حزم ستُرمى قبل أن يراها التطبيق أو واجهة الإرسال.

لم تكن الحالة جموداً نهائياً؛ انخفاض الحمل يعيد التقدم. لكن عداد المقاطعات واستخدام المعالج قد يبدوان قويين بينما التسليم معدوم. لذلك عرّفت الورقة الإنتاجية عند المستهلك النهائي، لا عند عداد الاستقبال.

أولوية المقاطعات كانت مجدولاً خفياً

لم يكن المجدول العام يملك القرار. مستويات ثابتة جعلت الاستقبال أعلى من البروتوكول وإتمام الإرسال وصيانة التوجيه وعمليات المستخدم.

تجميع المقاطعات خفّض الكلفة وأخّر الانهيار، لكنه لم يضمن دوراً للمخرج. إدخال الحزم بسرعة أكبر لا يعني إتمامها.

توقظ المقاطعة الاقتراع ولا تملك المعالج

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

زار الخيط مصادر الاستقبال والإرسال بالتناوب، ومنح كل استدعاء حصة من الحزم. وعندما ينتهي العمل تعود المقاطعات. وإذا قبلت الواجهة حزمة، دُفعت قدر الإمكان نحو الإتمام بدلاً من انتظار حد أولوية جديد.

التصميم هجين: الاقتراع الدائم يهدر المعالج في الهدوء، والمقاطعات الخالصة قد تحتكر التشبع. تكشف المقاطعة الحدث غير المتوقع، ويوزع الاقتراع المحدود السيل المستمر.

الاقتراع بلا حصة أعاد الفشل

عند إزالة الحصة، كان استدعاء الاستقبال يجد دائماً حزمة أخرى فلا يعيد التحكم إلى الحلقة. لم تُعالج نهايات الإرسال، ولم تتحرر الواصفات، وامتلأ طابور الخروج؛ فعادت الإنتاجية إلى قرابة الصفر.

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

أسقِط مبكراً واستمع إلى الطابور التالي

لا يمكن إكمال كل المدخلات في الحمل الزائد. الإسقاط عند الواجهة يتجنب كلفة المشغل والبروتوكول والطوابير. والتغذية الراجعة تخبر المدخل أن المرحلة التالية لم تعد تفرغ.

في تجربة screend، توقفت المعالجة عند امتلاء 75% من الطابور، وعادت عند 25%، مع مؤقت أمان يقارب ملي ثانية. وصف المؤلفان هذه القيم بأنها اعتباطية. ما يمكن نقله هو الحلقة: توقف المصب يجب أن يبطئ القبول.

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

الأرقام تحمل شروطها

كان الموجّه DECstation 3000/300 يعمل بـDigital UNIX V3.2، واختير لأنه أبطأ Alpha متاح. ربط شبكتي Ethernet فارغتين بسرعة 10 ميغابت/ثانية. أرسلت كل تجربة 10,000 حزمة UDP بحمولة أربعة بايتات؛ وكان المعدل متوسطاً لا إيقاعاً دقيقاً.

مع النواة الأصلية وscreend بدأ التدهور فوق نحو 2,000 حزمة/ثانية، وظهر القفل الكامل قرب 6,000. من دون screend بلغ الحد نحو 4,700. رفض التقرير تعميم الأرقام على شبكات ومعالجات أسرع، ولم يثبت تشغيل SMP الحقيقي، ولم يحسم أي الحزم أحق بالبقاء.

تصف وثائق NAPI الحالية في Linux شكلاً مألوفاً: المقاطعة تجدول اقتراعاً، وتبقى IRQ محجوبة، وتحد ميزانية كل دورة. هذا تشابه عملي، لا دليل على أن كل حمل زائد حديث هو الحالة نفسها.

يسجل ملف Google Research مسيرة Mogul في DEC/Compaq WRL وHP Labs وبنية Google الشبكية. وتبقى الورقة عملاً مشتركاً مع Ramakrishnan. معيارها التاريخي صارم: انشغال المدخل ليس أداءً إذا لم يصل شيء إلى النهاية.

المصادر