سؤال

لماذا تقوم اتصالات متعددة من نفس المضيف تحقيق إنتاجية أفضل من اتصالات متعددة من المضيفين المختلفة؟

أظن أن شيئا متعاونا في النواة (لينكس) ولكن تأكيد سوف يساعد كثيرا.

مزيد من التفاصيل لدي عملية استقبال واحدة، دعونا نسميها R. وهي تقبل الاتصالات الواردة وتتلقى البيانات باستخدام تحديد ().

لدي 3 عمليات المرسل S1، S2، S3. إنهم يتصلون بصحيح وإرسال البيانات بمعدل ثابت، أي 200MBIT في الثانية لكل ثانية.

إذا كانت S1، S2 و S3 على نفس الجهاز، أحصل على نتائج أفضل من وجود كل واحد منهم على جهاز مختلف. (ص في كلتا الحالتين على جهاز آخر)

مثال: R على host0، s1، s2، s3 على host2، r يتلقى في 600mbit / s

R على Host0، S1 على Host1، S2 على Host2، S3 على Host3، R يتلقى في 480mbit / s

هذا يبدو مضادا بديهيا بالنسبة لي، كنت أتوقع عكس ذلك لأنه في الحالة الثانية لا يتعين على المرسلين مشاركة بطاقة الشبكة والمعالج (لا يتوقع أن يكون معالج أو بطاقة شبكة أن تكون عنقيات ...)

المضيفين أعلاه هم العقد في كتلة Linux مع مفتاح Gigabix كامل دوبلكس مخصص. أنها تعمل 2.6.24-24 عام (آخر أوبونتو أعتقد)

هل كانت مفيدة؟

المحلول

ربما يكون هذا لأنه عندما يكون المرسلون جميعا على جهاز واحد، فإن الحزم الصادرة كلها قائمة في قائمة الانتظار تماما وإرسالها في وقت واحد (فقط بحقيقة حقيقة أنهم يمرون جميعا نيك واحد).

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

أتوقع أن يكون الازدهار الكمون الخاص به من تلقاء نفسه يكفي لضرب الكثير من النطاق الترددي الخاص بك - تذكر أنه للحفاظ على 200 ميغابت في الثانية مع نوافذ TCP القياسية، فأنت بحاجة إلى الحد الأدنى للرحلة الأولى من 2.6ms، وهو ضيق جدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top