Skip to content

Mellanox IB 网络运维与性能调优指南

摘要: 本文档整合了 Mellanox InfiniBand 网络的全生命周期管理经验,涵盖驱动安装、IP 配置、交换机固件升级、MPI 基准测试、性能调优及误码率故障排查流程。

1. 驱动安装与配置

1.1 安装 Mellanox OFED

适用于 RHEL/CentOS 等 EL 系系统。

bash
# 1. 解压安装包
tar zxvf MLNX_OFED_LINUX-5.3-1.0.0.1-rhel7.5-x86_64.tgz
cd MLNX_OFED_LINUX-5.3-1.0.0.1-rhel7.5-x86_64/

# 2. 安装 (强制安装所有组件)
./mlnxofedinstall --all --force

# 3. 重启生效
reboot

1.2 配置 IPoIB

配置 IB 网卡的静态 IP 地址,用于管理或 IPoIB 通信。

bash
# 编辑配置文件: /etc/sysconfig/network-scripts/ifcfg-ib0
NAME=ib0
DEVICE=ib0
BOOTPROTO=static
ONBOOT=yes
TYPE=InfiniBand
IPADDR=11.11.11.200
NETMASK=255.255.0.0
  • 验证: 执行 ip a 查看 IP,ibstat 查看链路状态 (State: Active)。

1.3 启动 Subnet Manager (SM)

在无管理交换机的小型网络中,需在至少一个节点上启动 OpenSM。

bash
systemctl start opensmd

2. 交换机固件升级

2.1 MST 工具初始化

Mellanox Software Tools (MST) 用于访问和管理 IB 设备。

bash
mst start
mst ib add
mst status

输出示例: /dev/mst/SW_MT54000_..._lid-0x0006 (对应交换机设备)

2.2 固件烧录流程

  1. 查询信息:
    bash
    # 假设设备为 lid-0x0002
    flint -d /dev/mst/SW_MT54000_..._lid-0x0002 query
  2. 烧录固件:
    bash
    flint -d /dev/mst/SW_MT54000_..._lid-0x0002 -i firmware.bin burn
  3. 重启生效:
    bash
    flint -d /dev/mst/SW_MT54000_..._lid-0x0002 swreset

    注意

    对于某些高端型号(如 400G MQM9790),可能需要物理断电 3 分钟后重新上电才能生效。

3. 性能测试 (MPI & OSU)

3.1 Intel MPI Benchmarks (IMB)

用于测试节点间的 PingPong 带宽与延迟。建议使用 Intel 2020+ 编译器版本。

bash
# PingPong 测试 (2 进程)
mpirun -iface ib0 -f hostfile -np 2 -ppn 1 ./IMB-MPI1 pingpong
  • 关注点:
    • Latency: 0 字节包的 t[usec] (通常 < 2us)。
    • Bandwidth: 4MB 包的 Mbytes/sec (接近线速)。

3.2 OSU Micro-Benchmarks (自动化脚本)

使用 OpenMPI 遍历测试所有节点对。

bash
#!/bin/bash
MPI_RUN="/usr/mpi/gcc/openmpi-4.1.7a1/bin/mpirun"
OSU_DIR="/path/to/osu-micro-benchmarks"

for i in `cat host1`; do
    for j in `cat host2`; do
        # 指定 IB 设备 mlx5_0:1
        $MPI_RUN -x UCX_NET_DEVICES=mlx5_0:1 -H $i,$j $OSU_DIR/osu_bw
    done
done

4. 性能调优

4.1 CPU 电源管理

高性能计算场景必须禁用节能模式,防止 CPU 唤醒延迟影响网络性能。

bash
# 设置为 Performance 模式
cpupower -c all frequency-set -g performance

# 验证
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 预期输出: performance

4.2 网卡参数调优

使用 mlnx_tune 工具一键优化。

bash
# 高吞吐量模式
mlnx_tune -p HIGH_THROUGHPUT

5. 健康检查与误码率排查

5.1 ibdiagnet 深度巡检

运行 30 分钟的压力测试以捕获间歇性误码。

bash
ibdiagnet --pc --pm_pause_time 1800 -P all=1 \
  --get_phy_info --get_cable_info --sc \
  --extended_speeds all --pm_per_lane --routing --sharp

5.2 故障判定标准

  • 误码率 (BER): 必须低于 $10^{-12}$ (严格标准) 或 $10^{-8}$ (最低标准)。
  • Link Down Counter: 增量必须为 0。

5.3 故障定位方法

通过 LID 号定位设备,采用交叉互换法

  1. 清洁: 清洁光纤端面和端口。
  2. 互换:
    • 更换线缆 (Cable)。
    • 更换光模块 (Transceiver)。
    • 对调网卡或交换机端口。
  3. 复测: 再次运行 ibdiagnet 确认误码归零。

AI-HPC Organization