CodingBox Q&A Ask question

Mesh di MCX516A-CCAT su DAC 100G: lshw dice 40Gbit/s e un singolo stream iperf3 arriva al massimo a 21 Gbit/s

Asked Active Viewed 49 AI translation from English
2

Gestiamo un cluster a tre nodi con i nodi cablati direttamente l'uno all'altro su DAC 100G, nessuno switch nel percorso, e le interfacce messe in un bond broadcast così il traffico di replica ha la sua fabric dedicata. Prima di metterci sopra un carico vero volevo una baseline, e i numeri non sono d'accordo tra loro.

  • 3x Mellanox ConnectX-5 EN, MCX516A-CCAT, dual-port QSFP28
  • un DAC 100G tra ogni coppia di nodi
  • host AMD EPYC, Proxmox su tutti e tre

ethtool è perfettamente soddisfatto:

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

lshw no:

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

E iperf3 tra due dei nodi sta a circa 21 Gbit/s, che non è vicino a nessuna delle due cifre.

Già fatto:

  • spostato il cavo sulla seconda porta su entrambe le schede, nessun cambiamento
  • scambiato con un altro DAC dello stesso tipo, nessun cambiamento
  • il link resta su tutto il tempo, nessun errore che sale sui contatori

Quindi quale dei due strumenti mi sta mentendo, e devo dare la colpa al cavo, alla scheda o al driver?

Comments 5

Accepted answer

Niente di quello che hai postato punta al DAC. Ci sono due cose scorrelate che succedono qui.

Prima cosa, il disaccordo. lshw -class network stampa una cifra di capacità che calcola per conto suo, e su queste schede dirà allegramente capacity: 40Gbit/s a proposito di un link che è salito a 100G. La velocità negoziata è quella che riporta ethtool, e la tua dice Speed: 100000Mb/s con 100000baseCR4/Full annunciato. Quel lato è a posto, non c'è niente da correggere.

Seconda cosa, il throughput. Controlla lo slot prima di toccare altro:

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

Se LnkSta si è allenato a 2.5GT/s mentre LnkCap dice 8GT/s, sei limitato ben al di sotto del filo e nessuna quantità di cavi cambiati aiuterà. Reinserisci la scheda e assicurati che stia in uno slot davvero cablato per la larghezza piena.

Poi smetti di misurare con un singolo stream:

# iperf3 -P 8 -c <peer>

Circa 21 Gbit/s è più o meno quello che un solo core ti darà su questa classe di host, quindi quel numero da solo ti dice ben poco. Guarda la CPU durante il run e guarda anche cosa fanno gli idle state: i core che scendono in C-state profondi tra un burst e l'altro ti costano banda reale a questa velocità.

3 Taiwanlinkeng56TW Show original (English) AI translation

Prima di ordinare qualsiasi ricambio, posta la riga LnkSta da lspci -vv per quella scheda e la riga di comando iperf3 esatta che hai usato. Un singolo stream a 100G misura un solo core CPU, non il link, e la gente ci brucia giorni sopra. E conferma che la seconda porta stia davvero portando l'altra gamba della mesh mentre testi, invece di stare ferma inattiva: uno slot che alimenta due porte 100G attive è un budget diverso da uno solo. Per ora metterei da parte lshw, non è lo strumento giusto per questa domanda.

3 United Arab Emirateslambdahawk88AE Show original (English) AI translation

Una correzione sulla parte dei C-state: se gli host sono EPYC, le manopole intel_idle che vengono incollate in ognuno di questi thread non ti servono a niente, quel driver non è affatto nel percorso su AMD. La leva che ha funzionato per me è stata processor.max_cstate=2 sulla command line del kernel. Stessa idea, piattaforma diversa. Il resto di quel post resta valido, in particolare non leggere una velocità negoziata da lshw.

2 SpainoptictechES Show original (English) AI translation

Guasto leggermente diverso, stessa famiglia di hardware, vale la pena escluderlo una volta sistemato lo slot: una mesh diretta di porte ConnectX-5 QSFP28 è facilissima da sbagliare al layer 3. Avevo tre nodi su MCX516A-CCA_Ax, firmware 16.35.4030 con il driver DOCA 2.8.0, cablati con DAC in rame MCP1600-C003E30L da 3 m. Ogni link riportava attivo a 100 Gbps e non passava un ping. Tutte e sei le interfacce mesh avevano indirizzi da un'unica subnet 10.5.5.x senza nessuno switch da nessuna parte nel percorso, quindi il kernel non aveva modo di decidere a quale porta fisica appartenesse una data destinazione. Una subnet per coppia di nodi, 10.5.5.x, 10.5.6.x e 10.5.7.x, e ha iniziato a funzionare. Vale la pena lanciare ip a e ip route su tutte e tre le scatole prima che qualcuno dia la colpa al rame.

1 Ukrainerxnode71UA Show original (English) AI translation

Entrambi i punti sono andati a segno. lspci -vv mostrava la scheda allenata a 2.5GT/s contro un LnkCap di 8GT/s, quindi quello era il sospettato numero uno. Ho spostato le schede in altri slot su tutte e tre le scatole, LnkSta ora sale a 8GT/s, e con iperf3 -P 8 la stessa coppia di nodi è andata subito oltre la cifra a singolo stream.

Ho anche rinunciato al bond broadcast e ricostruito la mesh su Open vSwitch con RSTP. Con iperf distribuito su tre thread CPU ed entrambe le porte sto misurando circa 95 Gbit/s adesso, abbastanza vicino alla line rate per quello che fa questo cluster. lshw insiste ancora su 40Gbit/s e ho smesso di guardarlo.

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