Mesh MCX516A-CCAT di DAC 100G: lshw bilang 40Gbit/s dan satu stream iperf3 mentok di 21 Gbit/s
Kami jalanin cluster tiga node dengan node-nodenya dikabelin langsung satu sama lain lewat DAC 100G, nggak ada switch di jalurnya, dan interface-nya dimasukin ke broadcast bond biar traffic replication punya fabric sendiri. Sebelum saya kasih beban beneran ke situ, saya mau baseline dulu, dan angka-angkanya nggak cocok satu sama lain.
- 3x Mellanox ConnectX-5 EN, MCX516A-CCAT, dual-port QSFP28
- satu DAC 100G di antara tiap pasangan node
- host AMD EPYC, Proxmox di ketiganya
ethtool seneng-seneng aja:
# ethtool ens1
Settings for ens1:
Supported link modes: 100000baseCR4/Full
Advertised link modes: 100000baseCR4/Full
Speed: 100000Mb/s
Duplex: Full
Link detected: yes
lshw enggak:
# lshw -class network
*-network
description: Ethernet interface
vendor: Mellanox Technologies
capacity: 40Gbit/s
Dan iperf3 di antara dua node-nya nangkring di kira-kira 21 Gbit/s, yang nggak deket sama sekali sama dua angka itu.
Udah dicoba:
- pindahin kabelnya ke port kedua di dua-dua card, nggak ada perubahan
- tukar pakai DAC lain tipe yang sama, nggak ada perubahan
- link-nya tetap up sepanjang waktu, nggak ada error yang naik di counter-nya
Jadi yang mana dari dua alat itu yang bohong ke saya, dan saya harusnya ngejar kabelnya, card-nya, atau driver-nya?
Comments 5
Nggak ada satu pun yang kamu post nunjuk ke DAC-nya. Ada dua hal yang nggak berhubungan kejadian di sini.
Pertama, soal ketidakcocokannya.
lshw -class networknge-print angka capability yang dia itung sendiri, dan di card-card ini dia bakal enteng aja bilangcapacity: 40Gbit/ssoal link yang naik di 100G. Rate yang ternegosiasi itu yangethtoollaporin, dan punya kamu bilangSpeed: 100000Mb/sdengan100000baseCR4/Fulladvertised. Sisi itu udah bener, nggak ada yang perlu dibenerin.Kedua, soal throughput-nya. Cek slot-nya dulu sebelum kamu sentuh apa pun yang lain:
Kalau
LnkStatraining di 2.5GT/s sementaraLnkCapbilang 8GT/s, kamu ke-cap jauh di bawah kabelnya dan tuker-tukar kabel sebanyak apa pun nggak bakal bantu. Pasang ulang card-nya dan pastiin dia duduk di slot yang beneran dirouting buat full width.Terus berhenti ngukur pakai satu stream doang:
Sekitar 21 Gbit/s itu kira-kira yang bisa dikasih satu core di kelas host ini, jadi angka itu sendirian nggak banyak cerita. Pantau CPU-nya selama run-nya dan lihat juga idle state-nya lagi ngapain: core yang jatuh ke C-state dalam di antara burst makan bandwidth beneran di rate segini.
Sebelum kamu pesan pengganti apa pun, post baris
LnkStadarilspci -vvbuat card itu dan command line iperf3 yang persis kamu pakai. Satu stream di 100G ngukur satu CPU core doang, bukan link-nya, dan orang-orang buang waktu berhari-hari buat ini. Dan konfirmasi juga port kedua beneran bawa leg mesh yang lain selagi kamu test, bukannya nganggur: satu slot ngasih makan dua port 100G yang live itu budget yang beda dari satu port. Saya bakal parkir dululshwbuat sekarang, itu bukan alat yang tepat buat pertanyaan ini.Satu koreksi soal bagian C-state-nya: kalau host-nya EPYC, knob
intel_idleyang di-paste ke setiap thread kayak gini nggak ngefek apa-apa buat kamu, driver itu sama sekali nggak ada di jalurnya di AMD. Lever yang jalan buat saya ituprocessor.max_cstate=2di kernel command line. Ide yang sama, platform beda. Sisa post itu tetap berlaku, khususnya soal jangan baca rate ternegosiasi darilshw.Failure yang agak beda, family hardware yang sama, layak disingkirin begitu slot-nya udah beres: mesh langsung dari port ConnectX-5 QSFP28 itu gampang banget salah di layer 3. Saya punya tiga node di MCX516A-CCA_Ax, firmware 16.35.4030 dengan driver DOCA 2.8.0, dikabelin pakai DAC copper MCP1600-C003E30L 3 m. Semua link lapor aktif di 100 Gbps dan nggak ada satu ping pun yang nyebrang. Keenam interface mesh-nya punya address dari satu subnet 10.5.5.x doang tanpa switch di mana pun di jalurnya, jadi kernel-nya nggak punya cara buat mutusin port fisik mana yang punya destination tertentu. Satu subnet per pasangan node, 10.5.5.x, 10.5.6.x, dan 10.5.7.x, dan itu mulai jalan. Layak jalanin
ip adanip routedi ketiga box-nya sebelum ada yang nyalahin copper-nya.Dua-duanya kena.
lspci -vvnunjukin card-nya training di 2.5GT/s lawanLnkCap8GT/s, jadi itu tersangka nomor satu. Saya pindahin card-nya ke slot lain di ketiga box-nya,LnkStasekarang naik di 8GT/s, dan denganiperf3 -P 8, pasangan node yang sama langsung ngelewatin angka single-stream-nya.Saya juga nyerah sama broadcast bond-nya dan rebuild mesh-nya di Open vSwitch dengan RSTP. Dengan iperf disebar di tiga CPU thread dan dua-dua port, saya ngukur sekitar 95 Gbit/s sekarang, yang cukup deket sama line rate buat yang dikerjain cluster ini.
lshwmasih ngotot 40Gbit/s dan saya udah berhenti liatin itu.