InfiniBand(IB)网卡测试与性能调优

🔍 一、设备检测与初始连通

1. 查看设备状态

  • 使用 ibstat 检查端口是否为 LinkUp、链路速率、LID、状态等
  • 使用 ibv_devinfo 查看 HCA 的 MTU、GUID、设备能力等详细信息

2. 启动子网管理器(必要时)

  • 启动命令:sudo systemctl start opensmsudo /etc/init.d/opensmd start
  • 若服务未运行,可能导致节点互通失败或性能异常

3. 配置 IPoIB 接口(用于 IP 测试模式)

1
2
3
4
sudo modprobe ib_ipoib
echo connected | sudo tee /sys/class/net/ib0/mode
sudo ip link set ib0 mtu 65520 up
sudo ip addr add 10.0.0.1/24 dev ib0

然后使用 ping 测试连通性,或用 ibdev2netdev 确认 ib0 已映射到物理设备


🧪 二、连通性测试:RDMA Ping

  • 安装 infiniband-diags

  • 启动服务端:

    1
    2
    3
    ibv_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
2
3
4
5
# 服务端
ib_write_bw -a -d mlx5_0

# 客户端
ib_write_bw -a -d mlx5_0 10.0.0.2

结果包含带宽 (MB/s 或 Gbps)、消息率、延迟统计等,多个消息大小与测试时间可调整参数如 -m, -t

B. IPoIB 模式下的带宽/延迟测试

可使用 iperf3qperf 测试 IP over InfiniBand 接口性能。

  • qperf 能报告带宽、延迟、CPU 使用率等
  • 示例:
1
2
3
4
5
6
# 在服务器端
qperf

# 在客户端
qperf -v -i mlx4_0:1 192.0.2.1 conf
qperf 192.0.2.1 tcp_bw udp_bw tcp_lat

🚀 四、GPUDirect RDMA 与 MPI 测试

若你使用 NVIDIA GPU 并启用 GPUDirect RDMA,可组合 Perftest 与 MPI benchmark(如 OSU Microbenchmarks)进行测试。

  • 安装 MVAPICH2‑GDR,可运行 OSU 的 MPI‑CUDA 带宽测试:
1
2
3
mpirun -np 2 host1 host2 \
-genv MV2_USE_GPUDIRECT=1 \
/opt/mvapich2/gdr/.../osu_bw -d cuda D D
  • 注意绑定 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 等隔离方法改善性能隔离,但一般用于大规模多任务情况