CodingBox Q&A Ask question

MikroTik CRS812 400G breakout'tan DGX Spark'a: 200G link 106 Gb/s'te tavan yapıyor, NCCL da Socket'e düşüyor

Asked Active Viewed 127 AI translation from English
9

Dağıtık eğitim için dört DGX Spark node'u ayağa kaldırıyoruz ve onları bir MikroTik CRS812-8DS-2DQ-2DDQ'ya astık. Plan, switch'te bir 400G QSFP-DD portunun iki node'u 200G'den beslemesiydi, yani birkaç breakout kablo tüm cluster'ı kapsayacaktı.

  • MikroTik CRS812-8DS-2DQ-2DDQ, breakout modda kullanılan QSFP-DD portları
  • NADDOD Q2Q56-400G-CU2, QSFP-DD 400G'den 2x QSFP56 200G'ye pasif DAC
  • onboard ConnectX-7'li DGX Spark node'ları
  • iperf3 ve nccl-tests all_reduce_perf ile doğrulama

İki uç da temiz bir 200GbE link raporluyor, ama throughput bunun biraz üzerinde yarısında oturuyor:

# iperf3 -c <peer> -P 8
[SUM]   0.00-10.00 sec   ...   106 Gbits/sec
single stream:                  ~30 Gbits/sec

# ip -br link
enp1s0f1np1     UP
enP2p1s0f1np1   UP

NCCL bundan daha kötü görünüyor: all_reduce_perf, dört node boyunca Socket transport ve kabaca 2 GB/s bus bandwidth raporluyor, yani RDMA'nın hiç kullanılmadığı açık.

Şimdiye kadar kontrol ettiklerimiz:

  • breakout kabloyu yeniden oturttuk ve switch portları arasında değiştirdik, rakamlar birebir aynı
  • stream sayısını artırdık, toplam 106 Gb/s civarında sabit kalıyor
  • switch'in portu 100G değil 200G raporladığını doğruladık

Sürekli geri döndüğüm kısım, tek bir fiziksel QSFP56 portunun node'da iki logical interface olarak görünmesi. Breakout her node'a lane'lerin sadece yarısını mı veriyor, yoksa bu donanımda bir 200G portu böyle mi görünmesi gerekiyor?

Comments 7

Accepted answer

Durum tam olarak bu, breakout kablosu da masum. Bu platformda ConnectX-7 portu PCIe x4 üzerinden bağlı ve her biri yaklaşık 100 Gb/s taşıyan iki logical yarı olarak gösteriliyor. Tam 200G ancak iki yarı da aynı anda yüklendiğinde ortaya çıkıyor, yani tek adresli bir iperf3 çalıştırmasının 100 Gb/s'in hemen üzerinde durması bir arıza değil, beklenen sonuç.

Burada işe yarayan:

ip link set dev enp1s0f1np1 mtu 9000
ip link set dev enP2p1s0f1np1 mtu 9000
iperf3 -c <peer> -P <n>
  • uçtan uca MTU 9000, node'larda ve switch'te, yoksa linkin büyük bir kısmını masada bırakırsın
  • iki logical interface'e de kendi adreslerini ver, yarı başına bir iperf3 oturumunu paralel çalıştır
  • CX7 interface'lerinde IPv6'yı kapat, yoksa RoCE GID index'leri yer değiştirir ve yanlış olanda kalırsın
  • NCCL'in Socket'e düşmek yerine RDMA kullanması için NCCL_IB_DISABLE=1'i /etc/nccl.conf'tan çıkar

İki yarı da trafik taşırken çift üzerinde line rate'e yakın bir yere inmelisin, nccl-tests all_reduce_perf de socket'ler üzerinden gitmeyi bıraktığında tamamen farklı bir bus bandwidth sınıfı raporlayacak.

3 Franceedgenode83FR Show original (English) AI translation

Kabloyu suçlamadan önce, o iki interface'i tam olarak nasıl sürüyorsun? enp1s0f1np1 ve enP2p1s0f1np1'i ikisi de UP olarak yapıştırdın, ama iperf3 ikisine de mi vuruyor, yoksa sadece adres taşıyana mı?

Paylaşmakta fayda olan başka şeyler: node'lardaki ve CRS812 portlarındaki MTU, çünkü bu hızda 1500 ciddi zarar veriyor, bir de /etc/nccl.conf'un içeriği. NCCL Socket transport'u seçtiğinde bunun sebebi neredeyse her zaman o dosyadaki bir şeyin ona IB yoluna dokunmamasını söylemesidir, fabric'in bozuk olması değil.

2 United Statestxnode67US Show original (English) AI translation

Haklı sorular. Sadece enp1s0f1np1'in bir adresi var, enP2p1s0f1np1 yarısı up ama konfigüre edilmemiş, şimdiye kadarki her iperf3 çalıştırması da o tek adrese gitti. Node'larda MTU 1500 ve switch tarafındaki L2 MTU'ya da hiç dokunmadım. Ve evet, işte orada:

# cat /etc/nccl.conf
NCCL_IB_DISABLE=1

Bu zaten image'ın içindeydi ve hiç sorgulamadım. Yani 106 Gb/s muhtemelen sadece portun bir yarısı artı biraz headroom mu?

4 Egypttxeng18EG Show original (English) AI translation

Farklı bir stack, aynı şekilde bir sürpriz. Benim tarafım RHEL 8.4 altında bir ConnectX-6 (MT28908), MLNX_OFED 5.7, firmware 20.32.2004, MFT 4.21 idi; karşı uç bir Switch-IB 2 SB7800, ikisinin arasında da 200G'yi 2x100G'ye indiren bir LinkX MCP7H50-H002R26 splitter'ı. Port şöyle geldi:

rate: 25 Gb/sec (1X EDR)
Width: 1x

ne mlxlink -d mlx5_0 -p 1 --speeds edr ne de --speeds hdr bir şeyi değiştirdi. Bir config hatasından çok silikonda bir tavan olduğu ortaya çıktı: EDR donanımı linkleri yalnızca 1x veya 4x genişlikte kurar, bu tür bir splitter da HDR ile gelen 2x gruplamaya yaslanır. Yani ya o switch'e düz bir 4x EDR kablo, ya da bölme şartsa HDR'ye geçmek.

Genel olarak breakout'lar için ahlaki ders: herhangi bir şey ölçmeden önce her ucun gerçekte hangi lane gruplamasını kurabildiğini çöz.

2 FrancefiberwolfFR Show original (English) AI translation

Yukarıdaki tarifteki bir şeyin açıkça söylenmesi gerekiyor, çünkü insanların kazanımları tekrar kaybettiği yer burası: MTU'nun switch'te de eşleşmesi gerekiyor. Portlar hâlâ 1500 byte'lık frame geçirirken host'larda 9000 ayarlamak sana throughput yerine drop kazandırır. CRS812 portlarında L2 MTU'yu ayarla ve herhangi bir testi tekrar çalıştırmadan önce büyük payload'lu bir ping ile doğrula.

IPv6 konusu da aynı hikaye. İki yarı da adreslenmişken IPv6 açık bırakılırsa port başına ekstra GID girişleri olur, testinin kullanması söylenen index de senin düşündüğün olmayabilir. CX7 interface'lerinde IPv6'yı kapatmak o tabloyu küçük ve reboot'lar arasında öngörülebilir tutar, bu da koşuları karşılaştırırken kulağa geldiğinden daha çok önemlidir.

0 Italycoaxtech75IT Show original (English) AI translation

Down kalan bir breakout portunun seninkinden tamamen farklı bir hayvan olduğunu akılda tutmakta fayda var. İkinci el bir Arista DCS-7060CX-32S'te (EOS 4.16.8FX-7060X) benim dört sub-interface'im hiç hata göstermedi ve basitçe hiç linklenmedi. Kutu transceiver qsfp default-mode 4x10G'de otururken karşı uç 25G sunuyordu, Et17/1 de hız elle ayarlanana kadar errdisabled kaldı:

config
interface ethernet 17/1-4
speed 25g

Aynı oturumda bir Mellanox kablo unqualified bir transceiver olarak reddedildi ve Arista-uyumlu bir 100GBASE-CR4 QSFP28 DAC ile değiştirilmesi gerekti. Diğer uçta, bir meslektaş bir Mellanox switch'e doğru Junos 23.2R1-S1.8-EVO çalıştıran bir QFX5220-32CD'de, Port Checker'ın doğruladığı bir port profile ve denenen her FEC varyantıyla bir QDD-4X100G-2P5M breakout'unu hiç ayağa kaldıramadı. Seninki en azından negotiate oluyor ve trafik geçiriyor.

4 VietnamtxhawkVN Show original (English) AI translation

Doğrulandı, port hiç bozuk değildi. enP2p1s0f1np1'i kendi interface'i olarak adresledim, node'larda ve switch portlarında MTU 9000 ayarladım, iki CX7 interface'inde de IPv6'yı kapattım ve NCCL_IB_DISABLE=1'i /etc/nccl.conf'tan çıkardım.

Yarı başına bir tane olmak üzere iki paralel iperf3 oturumu şimdi 196-198 Gb/s toplam veriyor. Dört node boyunca all_reduce_perf 23.76 GB/s bus bandwidth raporluyor, NCCL de RDMA yolunda, logda artık Socket transport yok. NADDOD Q2Q56-400G-CU2 zaten baştan beri işini yapıyormuş.

4 Egypttxeng18EG Show original (English) AI translation
Log in to comment. Log in