CodingBox Q&A Ask question

MCX516A-CCAT 100G DAC üzerinde mesh: lshw 40Gbit/s diyor, tek bir iperf3 stream'i 21 Gbit/s'de tavan yapıyor

Asked Active Viewed 49 AI translation from English
2

Üç node'lu bir cluster çalıştırıyoruz, node'lar birbirine doğrudan 100G DAC üzerinden kablolanmış, yolda switch yok, ve interface'ler bir broadcast bond'a konmuş ki replication trafiğinin kendi fabric'i olsun. Üzerine gerçek yük bindirmeden önce bir baseline istedim, ama rakamlar birbiriyle uyuşmuyor.

  • 3x Mellanox ConnectX-5 EN, MCX516A-CCAT, dual-port QSFP28
  • her node çifti arasında bir 100G DAC
  • AMD EPYC host'lar, üçünde de Proxmox

ethtool gayet memnun:

# ethtool ens1
Settings for ens1:
        Supported link modes:   100000baseCR4/Full
        Advertised link modes:  100000baseCR4/Full
        Speed: 100000Mb/s
        Duplex: Full
        Link detected: yes

lshw memnun değil:

# lshw -class network
  *-network
       description: Ethernet interface
       vendor: Mellanox Technologies
       capacity: 40Gbit/s

Ve iki node arasında iperf3 kabaca 21 Gbit/s'de duruyor, ki bu ikisinin de yakınından geçmiyor.

Şimdiye kadar yapılanlar:

  • kabloyu her iki karttaki ikinci porta taşıdım, değişen yok
  • aynı tipten başka bir DAC taktım, değişen yok
  • link tüm süre boyunca up kalıyor, sayaçlarda tırmanan hata yok

Peki bu iki araçtan hangisi bana yalan söylüyor, ve peşine düşmem gereken kablo mu, kart mı yoksa driver mı?

Comments 5

Accepted answer

Paylaştığın hiçbir şey DAC'ı işaret etmiyor. Burada birbiriyle ilgisiz iki şey oluyor.

Birincisi, uyuşmazlık. lshw -class network kendi hesapladığı bir kapasite rakamı basıyor, ve bu kartlarda 100G'de up gelen bir link için gönül rahatlığıyla capacity: 40Gbit/s diyecektir. Negotiate edilen hız ethtool'un raporladığı, ve seninki 100000baseCR4/Full advertise edilmişken Speed: 100000Mb/s diyor. Bu tarafı sorunsuz, düzeltilecek bir şey yok.

İkincisi, throughput. Başka bir şeye dokunmadan önce slotu kontrol et:

# lspci -vv
        LnkCap: ... Speed 8GT/s ...
        LnkSta: ... Speed 2.5GT/s ... (downgraded)

LnkCap 8GT/s derken LnkSta 2.5GT/s'de eğitim aldıysa, telin çok altında bir tavana kilitlenmişsin demektir ve ne kadar kablo değiştirirsen değiştir yardımcı olmaz. Kartı yeniden otur ve gerçekten tam genişlik için kablolanmış bir slotta oturduğundan emin ol.

Sonra tek stream ile ölçmeyi bırak:

# iperf3 -P 8 -c <peer>

Bu sınıf bir host'ta tek bir core'un sana vereceği şey kabaca 21 Gbit/s civarı, yani o rakam tek başına sana çok az şey söylüyor. Çalışma sırasında CPU'yu izle ve idle state'lerin ne yaptığına da bak: burst'ler arasında derin C-state'lere düşen core'lar bu hızda gerçek bant genişliğine mal oluyor.

3 Taiwanlinkeng56TW Show original (English) AI translation

Değiştirmek için herhangi bir şey sipariş etmeden önce, o kart için lspci -vv çıktısındaki LnkSta satırını ve kullandığın tam iperf3 komut satırını paylaş. 100G'de tek bir stream tek bir CPU core'unu ölçer, linki değil, ve insanlar bunun için günler harcıyor. Ayrıca test ederken ikinci portun gerçekten mesh'in diğer bacağını taşıdığını doğrula, boşta durmadığını: tek bir slotun iki canlı 100G portu beslemesi tek porttan farklı bir bütçedir. Şimdilik lshw'yi bir kenara bırakırdım, bu soru için doğru araç değil.

3 United Arab Emirateslambdahawk88AE Show original (English) AI translation

C-state kısmına bir düzeltme: host'lar EPYC ise, bu tarz her thread'e yapıştırılan intel_idle ayarları sana hiçbir şey kazandırmaz, o driver AMD'de yolun üzerinde hiç değil. Bende işe yarayan kaldıraç kernel command line'daki processor.max_cstate=2 oldu. Aynı fikir, farklı platform. O yazının geri kalanı geçerliliğini koruyor, özellikle de negotiate edilen hızı lshw'den okumama kısmı.

2 SpainoptictechES Show original (English) AI translation

Biraz farklı bir arıza, aynı donanım ailesi, slot meselesi çözülünce elemeye değer: ConnectX-5 QSFP28 portlarının doğrudan mesh'i layer 3'te çok kolay yanlış gidiyor. Bende MCX516A-CCA_Ax üzerinde üç node vardı, DOCA 2.8.0 driver ile firmware 16.35.4030, MCP1600-C003E30L 3 m bakır DAC ile kablolanmış. Her link 100 Gbps'de active raporlanıyordu ve tek bir ping bile geçmiyordu. Altı mesh interface'inin hepsinde, yolda hiçbir yerde switch olmadan, tek bir 10.5.5.x subnet'inden adresler vardı, yani kernel'ın belirli bir hedefin hangi fiziksel porta ait olduğuna karar vermesinin bir yolu yoktu. Node çifti başına bir subnet, 10.5.5.x, 10.5.6.x ve 10.5.7.x, ve çalışmaya başladı. Kimse bakırı suçlamadan önce üç kutuda da ip a ve ip route çalıştırmaya değer.

1 Ukrainerxnode71UA Show original (English) AI translation

İki nokta da isabet etti. lspci -vv, kartın LnkCap 8GT/s iken 2.5GT/s'de eğitim aldığını gösterdi, yani bir numaralı şüpheli buydu. Kartları üç kutuda da başka slotlara taşıdım, LnkSta artık 8GT/s'de geliyor, ve iperf3 -P 8 ile aynı node çifti tek stream rakamını hemen geçti.

Broadcast bond'dan da vazgeçtim ve mesh'i RSTP ile Open vSwitch üzerinde yeniden kurdum. Üç CPU thread'ine ve iki porta yayılmış iperf ile şu anda yaklaşık 95 Gbit/s ölçüyorum, ki bu cluster'ın işi için line rate'e yeterince yakın. lshw hâlâ 40Gbit/s'de ısrar ediyor ve artık ona bakmayı bıraktım.

1 United Kingdomcoaxpilot98GB Show original (English) AI translation
Log in to comment. Log in