InfiniBand(IB)网卡测试与性能调优
InfiniBand(IB)网卡测试与性能调优
🔍 一、设备检测与初始连通
1. 查看设备状态
- 使用
ibstat检查端口是否为 LinkUp、链路速率、LID、状态等 - 使用
ibv_devinfo查看 HCA 的 MTU、GUID、设备能力等详细信息
2. 启动子网管理器(必要时)
- 启动命令:
sudo systemctl start opensm或sudo /etc/init.d/opensmd start - 若服务未运行,可能导致节点互通失败或性能异常
3. 配置 IPoIB 接口(用于 IP 测试模式)
1 | sudo modprobe ib_ipoib |
然后使用 ping 测试连通性,或用 ibdev2netdev 确认 ib0 已映射到物理设备
🧪 二、连通性测试:RDMA Ping
安装
infiniband-diags包启动服务端:
1
2
3ibv_devinfo
ibstat
ibping -S客户端运行:
1
ibping -C -P <port> <server-LID>
用于验证 RDMA 通道是否可达,以及每跳最基础的往返延迟
📈 三、带宽与延迟性能测试
A. 使用 Perftest 套件(推荐此方法全面测试 RDMA 性能)
Perftest 包括多个工具:
ib_send_bw,ib_send_lat(Send/Recv)ib_read_bw,ib_read_lat(RDMA Read)ib_write_bw,ib_write_lat(RDMA Write)ib_atomic_bw,ib_atomic_lat(Atomic 操作)raw_ethernet_bw/lat(以太网测试,通过 OFED 支持)
示例命令:
1 | # 服务端 |
结果包含带宽 (MB/s 或 Gbps)、消息率、延迟统计等,多个消息大小与测试时间可调整参数如 -m, -t
B. IPoIB 模式下的带宽/延迟测试
可使用 iperf3 或 qperf 测试 IP over InfiniBand 接口性能。
- qperf 能报告带宽、延迟、CPU 使用率等
- 示例:
1 | # 在服务器端 |
🚀 四、GPUDirect RDMA 与 MPI 测试
若你使用 NVIDIA GPU 并启用 GPUDirect RDMA,可组合 Perftest 与 MPI benchmark(如 OSU Microbenchmarks)进行测试。
- 安装 MVAPICH2‑GDR,可运行 OSU 的 MPI‑CUDA 带宽测试:
1 | mpirun -np 2 host1 host2 \ |
- 注意绑定 GPU 所在 NUMA socket 的 CPU 核心和网卡路径,以优化性能
🛠️ 五、系统调优建议
1. IRQ 与 CPU 亲和绑定
- 禁用
irqbalance服务,避免中断分配到多个 CPU 核心 - 把 IB 网卡中断绑定到指定 CPU 上,确保压力不会集中某个核以避免性能瓶颈
- Iperf 或 qperf 也可绑定到特定 CPU/core 来同步整体资源分配
2. NUMA 亲和性配置
- 将进程/中断与网卡所在 NUMA 节点绑定,提高 LL/DRAM 访问效率及吞吐性能
3. IPoIB 模式切换
使用 “connected” 模式通常带来更高吞吐和更低延迟,而默认的 datagram 模式性能较差
4. 软件栈与驱动
- 安装最新 OFED/Mellanox 驱动以获得性能优化与新特性支持
- 使用
mlnx_tune或 Mellanox 提供的系统调优脚本配置最佳设置(MTU、缓冲区、各种系统参数等)
⚠️ 六、排查常见问题
若性能远低于硬件规格(例如 40/56/100 Gbps),请检查:
- 链路状态是否为完整带速(LinkUp + 正确速率)
- MTU 是否设置为最高(如 65520)
- 是否使用 connected 模式 IPoIB
- CPU 使用率是否太高(结合
top,mpstat检查) - 中断和进程是否正确绑定至 NUMA node
- 是否禁用 irqbalance
注意 RDMA scenario 并发冲突问题:当多个应用共用 RDMA 通道(如 MPI + 文件系统),可能造成性能不稳定。可参考 Justitia 等隔离方法改善性能隔离,但一般用于大规模多任务情况
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 FrankTest!
评论
