شبكة مِش من MCX516A-CCAT عبر DAC بسرعة 100G: lshw يقول 40 جيجابت/ث وتيار iperf3 واحد يصل بحد أقصى إلى 21 جيجابت/ث
نُشغّل عنقوداً من ثلاث عُقد بكابلات مباشرة بين بعضها عبر DAC بسرعة 100G، دون محوّل في المسار، والواجهات موضوعة في ربط بث (broadcast bond) بحيث تحصل حركة النسخ المتماثل على بنيتها الخاصة. قبل أن أضع حملاً حقيقياً عليها أردت خط أساس، والأرقام لا تتفق مع بعضها.
- 3x Mellanox ConnectX-5 EN، MCX516A-CCAT، ثنائية المنفذ QSFP28
- كابل DAC واحد بسرعة 100G بين كل زوج من العُقد
- مضيفات AMD EPYC، Proxmox على الثلاثة
ethtool راضٍ تماماً:
# ethtool ens1
Settings for ens1:
Supported link modes: 100000baseCR4/Full
Advertised link modes: 100000baseCR4/Full
Speed: 100000Mb/s
Duplex: Full
Link detected: yes
lshw ليس كذلك:
# lshw -class network
*-network
description: Ethernet interface
vendor: Mellanox Technologies
capacity: 40Gbit/s
وiperf3 بين اثنتين من العُقد يستقر عند نحو 21 جيجابت/ث، وهو بعيد جداً عن كلا الرقمين.
ما تم بالفعل:
- نقلت الكابل إلى المنفذ الثاني على كلتا البطاقتين، دون تغيير
- استبدلت بكابل DAC آخر من نفس النوع، دون تغيير
- الرابط يبقى مرفوعاً طوال الوقت، دون تصاعد في أخطاء العدادات
إذن أي من الأداتين تكذب عليّ، وهل يجب أن أطارد الكابل أم البطاقة أم التعريف؟
Comments 5
لا شيء نشرته يشير إلى الـDAC. هناك شيئان غير مرتبطين يحدثان هنا.
أولاً، عدم الاتفاق. يطبع
lshw -class networkرقم قدرة يحسبه بنفسه، وعلى هذه البطاقات سيقول بسرورcapacity: 40Gbit/sعن رابط ارتفع عند 100G. المعدل المتفاوَض عليه هو ما يُبلغهethtool، وعندك يقولSpeed: 100000Mb/sمع إعلان100000baseCR4/Full. ذلك الجانب سليم، لا شيء لإصلاحه.ثانياً، الإنتاجية. تحقق من الفتحة قبل أن تلمس أي شيء آخر:
إن تدرّبت
LnkStaعند 2.5GT/s بينما يقولLnkCap8GT/s، فأنت محدود بشكل جيد دون سعة الخط ولن يساعد أي قدر من تبديل الكابلات. أعد تركيب البطاقة وتأكد من أنها في فتحة موصولة فعلاً بالعرض الكامل.ثم توقف عن القياس بتيار واحد:
نحو 21 جيجابت/ث هو تقريباً ما سيعطيك إياه نواة واحدة على هذه الفئة من المضيفين، لذا هذا الرقم بمفرده يخبرك القليل جداً. راقب المعالج أثناء التشغيل وانظر أيضاً ماذا تفعل حالات الخمول: النوى التي تسقط في حالات C عميقة بين الدفعات تكلفك نطاقاً ترددياً حقيقياً عند هذا المعدل.
قبل أن تطلب أي استبدال، انشر سطر
LnkStaمنlspci -vvلتلك البطاقة وسطر أمر iperf3 الدقيق الذي استخدمته. تيار واحد عند 100G يقيس نواة معالج واحدة، وليس الرابط، ويحرق الناس أياماً على هذا. وأكّد أن المنفذ الثاني ينقل فعلاً الساق الأخرى من شبكة المِش أثناء اختبارك، لا أنه خامل: فتحة واحدة تغذّي منفذين حيّين بسرعة 100G ميزانية مختلفة عن فتحة تغذّي واحداً. سأضعlshwجانباً حالياً، فهو ليس الأداة المناسبة لهذا السؤال.تصحيح واحد بخصوص جزء حالات C: إن كانت المضيفات EPYC، فمفاتيح
intel_idleالتي تُلصق في كل واحد من هذه المواضيع لا تفعل شيئاً لك، ذلك التعريف ليس في المسار على AMD إطلاقاً. المفتاح الذي نجح عندي هوprocessor.max_cstate=2في سطر أوامر النواة. نفس الفكرة، منصة مختلفة. بقية تلك المشاركة صحيحة، خصوصاً عدم قراءة معدل متفاوَض عليه منlshw.عطل مختلف قليلاً، نفس فئة العتاد، يستحق الاستبعاد بمجرد ترتيب الفتحة: شبكة مِش مباشرة من منافذ ConnectX-5 QSFP28 من السهل جداً إخطاؤها في الطبقة 3. كان لدي ثلاث عُقد على MCX516A-CCA_Ax، برنامج ثابت 16.35.4030 مع تعريف DOCA 2.8.0، موصولة بكابل DAC نحاسي MCP1600-C003E30L بطول 3 أمتار. كل رابط أبلغ عن أنه نشط بسرعة 100 جيجابت ولا بينغ واحد عبر. كانت كل واجهات المِش الست تحمل عناوين من نفس الشبكة الفرعية 10.5.5.x دون أي محوّل في المسار، لذا لم يكن لدى النواة طريقة لتحديد أي منفذ فيزيائي يخص أي وجهة. شبكة فرعية واحدة لكل زوج عُقد، 10.5.5.x و10.5.6.x و10.5.7.x، وبدأ العمل. يستحق تشغيل
ip aوip routeعلى الأجهزة الثلاثة قبل أن يلوم أحد النحاس.كلتا النقطتين أصابتا. أظهر
lspci -vvأن البطاقة تدرّبت عند 2.5GT/s مقابلLnkCapعند 8GT/s، إذن كان ذلك المشتبه به الأول. نقلت البطاقات إلى فتحات أخرى على الأجهزة الثلاثة،LnkStaيرتفع الآن عند 8GT/s، ومعiperf3 -P 8تجاوز نفس زوج العُقد فوراً رقم التيار الواحد.تخليت أيضاً عن ربط البث وأعدت بناء المِش على Open vSwitch مع RSTP. مع iperf موزَّعاً عبر ثلاث خيوط معالج وكلا المنفذين أقيس الآن نحو 95 جيجابت/ث، وهو قريب بما يكفي من معدل الخط لما يفعله هذا العنقود.
lshwلا يزال يصرّ على 40Gbit/s وتوقفت عن النظر إليه.