最近发现 H100 集群 IB 网络通信有问题。跑 DeepEP,MoonCake 都会有通信报错。nccl init 也很慢。

正常跑 ibsend 啥的都没问题。

命令:

1
lspci -d 15b3::0207 -n | awk '{print $1}' | xargs -I{} sh -c 'echo {} && mlxlink -d {} -c | grep -e Effective -e Raw' |tee /tmp/mlxlink_$(date +%Y-%m-%d_%H-%M-%S).log

lspci -d 15b3::0207 -n 查找 IB 网卡。15b3::0207是产品 ID

mlxlink -d device -c 列出 Error 以及 BER(Bit Error Rate 误码率)

此命令输出到终端,并且写入文件/tmp/mlxlink_xxx.log

mlxlink 输出结果样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Operational Info
----------------
State : Active
Physical state : LinkUp
Speed : IB-NDR
Width : 4x
FEC : Ethernet_Consortium_LL_50G_RS_FEC_PLR -(272,257+1)
Loopback Mode : No Loopback
Auto Negotiation : ON

Supported Info
--------------
Enabled Link Speed : 0x00000080 (NDR)
Supported Cable Speed : 0x00000080 (NDR)

Troubleshooting Info
--------------------
Status Opcode : 0
Group Opcode : N/A
Recommendation : No issue was observed

Tool Information
----------------
Firmware Version : 28.39.3004
amBER Version : 2.22
MFT Version : mft 4.26.1-3

Physical Counters and BER Info
------------------------------
Time Since Last Clear [Min] : 1744.3
Symbol Errors : 0
Symbol BER : 15E-255
Effective Physical Errors : 16
Effective Physical BER : 3E-16
Raw Physical Errors Per Lane : 185219462,14538251,3096793152,798004665
Raw Physical BER : 1E-7
Link Down Counter : 0
Link Error Recovery Counter : 0

关注 Raw Physical BER,但两者都要看

优先级和用途

🎯 Raw Physical BER - 主要关注对象

  • 作用:反映真实的物理层健康状况
  • 含义:未经任何纠错处理的原始误码率
  • 用途:硬件故障诊断的第一指标

📊 Effective Physical BER - 辅助参考

  • 作用:反映实际数据传输质量
  • 含义:经过 FEC 纠错后的最终误码率
  • 用途:评估当前链路可用性

判断逻辑流程


实际案例分析

以你之前的数据为例:

1
2
Raw Physical BER     : 2E-8     ← 🚨 严重超标(正常<1E-12)
Effective Physical BER: 2E-17 ← ✅ 纠错后正常

解读

  1. Raw BER = 2E-8:物理层存在严重问题,需要立即更换硬件
  2. Effective BER = 2E-17:FEC 正在拼命纠错,暂时保证数据正确性
  3. 风险:一旦错误突发超过 FEC 能力,会出现数据损坏

告警阈值设置

BER 类型 正常 警告 严重 紧急
Raw BER <1E-15 1E-12 1E-9 >1E-8
Effective BER <1E-15 1E-12 1E-9 >1E-6

总结:Raw BER 是硬件健康的晴雨表,Effective BER 是当前服务质量的体现。故障排查时 Raw BER 是决策依据

查看 IB 网卡状态

1
ibstatus

查看 GID

1
show_gids

典型输出示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DEV             PORT    INDEX   GID                                     IPv4            VER     DEV
--- ---- ----- --- ------------ --- ---
mlx5_eth0 1 0 fe80:0000:0000:0000:a288:c2ff:fef8:e502 v1 enP1s10f0np0
mlx5_eth0 1 1 fe80:0000:0000:0000:a288:c2ff:fef8:e502 v2 enP1s10f0np0
mlx5_eth0 1 2 0000:0000:0000:0000:0000:ffff:5d77:a8bf 93.119.168.191 v1 enP1s10f0np0
mlx5_eth0 1 3 0000:0000:0000:0000:0000:ffff:5d77:a8bf 93.119.168.191 v2 enP1s10f0np0
mlx5_eth1 1 0 fe80:0000:0000:0000:a288:c2ff:fef8:e504 v1 enP1s10f0v0
mlx5_eth1 1 1 fe80:0000:0000:0000:a288:c2ff:fef8:e504 v2 enP1s10f0v0
mlx5_eth1 1 2 0000:0000:0000:0000:0000:ffff:0a89:00e1 10.137.0.225 v1 enP1s10f0v0
mlx5_eth1 1 3 0000:0000:0000:0000:0000:ffff:0a89:00e1 10.137.0.225 v2 enP1s10f0v0
mlx5_eth2 1 0 fe80:0000:0000:0000:a288:c2ff:fef8:e505 v1 enP1s10f0v1
mlx5_eth2 1 1 fe80:0000:0000:0000:a288:c2ff:fef8:e505 v2 enP1s10f0v1
mlx5_eth3 1 0 fe80:0000:0000:0000:a288:c2ff:fef8:e506 v1 enP1s10f0v2
mlx5_eth3 1 1 fe80:0000:0000:0000:a288:c2ff:fef8:e506 v2 enP1s10f0v2
mlx5_eth4 1 0 fe80:0000:0000:0000:a288:c2ff:fef8:e507 v1 enP1s10f0v3
mlx5_eth4 1 1 fe80:0000:0000:0000:a288:c2ff:fef8:e507 v2 enP1s10f0v3
mlx5_ib0 1 0 fe80:0000:0000:0000:58a2:e103:00e4:297a v1
mlx5_ib1 1 0 fe80:0000:0000:0000:58a2:e103:00e4:295e v1
mlx5_ib2 1 0 fe80:0000:0000:0000:58a2:e103:00e4:2986 v1
mlx5_ib3 1 0 fe80:0000:0000:0000:58a2:e103:00e4:2976 v1
mlx5_ib4 1 0 fe80:0000:0000:0000:58a2:e103:00e4:2946 v1
mlx5_ib5 1 0 fe80:0000:0000:0000:58a2:e103:00e4:2c76 v1
mlx5_ib6 1 0 fe80:0000:0000:0000:58a2:e103:00e4:2c5e v1
mlx5_ib7 1 0 fe80:0000:0000:0000:58a2:e103:00e4:2c6a v1
n_gids_found=22

字段解释:

  • DEV: IB 设备名称(对应物理网卡)
  • PORT: 网卡端口号
  • INDEX: GID 表索引
  • GID: 128 位全局标识符
  • IPv4: 对应的 IPv4 地址(如果有)
  • VER: GID 版本(v1 或 v2)

GID(Global Identifier)是什么?

GID 是 InfiniBand 网络中的全局标识符,是一个 128 位的标识符,用于在整个 InfiniBand 子网中唯一标识一个端口。

与 IB 网卡的关系

  • 物理层关联:
    • 每个 IB 网卡端口都有一个或多个 GID
    • GID 存储在网卡的固件中
    • 通过硬件 GUID(全局唯一标识符)生成
  • 逻辑层功能:
    • 用于路由和寻址
    • 支持 IPv6 兼容格式
    • 实现子网间通信