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. 重启生效
reboot1.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 opensmd2. 交换机固件升级
2.1 MST 工具初始化
Mellanox Software Tools (MST) 用于访问和管理 IB 设备。
bash
mst start
mst ib add
mst status输出示例: /dev/mst/SW_MT54000_..._lid-0x0006 (对应交换机设备)
2.2 固件烧录流程
- 查询信息:bash
# 假设设备为 lid-0x0002 flint -d /dev/mst/SW_MT54000_..._lid-0x0002 query - 烧录固件:bash
flint -d /dev/mst/SW_MT54000_..._lid-0x0002 -i firmware.bin burn - 重启生效: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(接近线速)。
- Latency: 0 字节包的
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
done4. 性能调优
4.1 CPU 电源管理
高性能计算场景必须禁用节能模式,防止 CPU 唤醒延迟影响网络性能。
bash
# 设置为 Performance 模式
cpupower -c all frequency-set -g performance
# 验证
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 预期输出: performance4.2 网卡参数调优
使用 mlnx_tune 工具一键优化。
bash
# 高吞吐量模式
mlnx_tune -p HIGH_THROUGHPUT5. 健康检查与误码率排查
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 --sharp5.2 故障判定标准
- 误码率 (BER): 必须低于 $10^{-12}$ (严格标准) 或 $10^{-8}$ (最低标准)。
- Link Down Counter: 增量必须为 0。
5.3 故障定位方法
通过 LID 号定位设备,采用交叉互换法:
- 清洁: 清洁光纤端面和端口。
- 互换:
- 更换线缆 (Cable)。
- 更换光模块 (Transceiver)。
- 对调网卡或交换机端口。
- 复测: 再次运行
ibdiagnet确认误码归零。
