ib_write_bw 是 perftest 工具集中的 RDMA Write 带宽测试工具,主要用于测试:
- RDMA Write 带宽
- 消息速率
- QP 并发能力
- MTU影响
- PCIe/NIC性能
- GPU Direct RDMA性能
常用参数整理如下。
1. 基础参数
| 参数 | 示例 | 说明 |
|---|---|---|
-d |
-d mlx5_0 |
指定 RDMA 设备(HCA) |
-i |
-i 1 |
指定端口号 |
-p |
-p 18515 |
指定TCP控制连接端口 |
-F |
-F |
忽略部分参数检查(force模式) |
-h |
-h |
查看帮助 |
-V |
-V |
查看版本 |
示例:
bash
ib_write_bw -d shca_0 -i 1 12.11.7.33
2. Queue Pair(QP)相关参数
| 参数 | 示例 | 说明 |
|---|---|---|
-q |
-q 8 |
QP数量 |
-t |
-t 128 |
TX Queue Depth(发送队列深度) |
-r |
-r 128 |
RX Queue Depth |
-R |
-R |
使用SRQ共享接收队列 |
QP影响
单QP:
text
QP1
|
NIC
多QP:
text
QP1 \
QP2 \
QP3 ---> NIC
QP4 /
例如:
bash
ib_write_bw \
-d shca_0 \
-q 8 \
12.11.7.33
测试8个并行QP。
3. 数据大小参数
| 参数 | 示例 | 说明 |
|---|---|---|
-s |
-s 65536 |
每次消息大小(byte) |
-n |
-n 10000 |
iteration次数 |
-a |
-a |
自动测试多个size |
--size |
--size=1M |
指定大小 |
常用:
64KB测试
bash
-s 65536
1MB大包
bash
-s 1048576
4. MTU相关参数
| 参数 | 示例 | 说明 |
|---|---|---|
-m |
-m 4096 |
设置IB MTU |
--mtu |
--mtu=4096 |
同义 |
常见:
| MTU | 场景 |
|---|---|
| 256 | 低性能 |
| 1024 | 普通 |
| 2048 | 较好 |
| 4096 | 推荐 |
你的:
Mtu : 4096[B]
已经最大。
5. 测试时间/次数
| 参数 | 示例 | 说明 |
|---|---|---|
-n |
-n 5000 |
测试次数 |
-D |
-D 10 |
测试持续秒数 |
-N |
-N |
不交换数据,只测试 |
例如:
持续10秒:
bash
ib_write_bw -D 10 12.11.7.33
6. 内存相关
| 参数 | 示例 | 说明 |
|---|---|---|
-l |
-l 100 |
outstanding WR数量 |
-b |
-b |
双向测试 |
--mr_per_qp |
每QP创建多个MR |
7. 双向测试
默认:
text
Client ---> Server
开启:
bash
-b
变:
text
Client <----> Server
例如:
bash
ib_write_bw -b -d shca_0 12.11.7.33
结果:
测试双向带宽。
8. GPU Direct RDMA参数(AI场景重点)
| 参数 | 示例 | 说明 |
|---|---|---|
--use_cuda |
--use_cuda |
使用GPU显存 |
--use_rocm |
--use_rocm |
AMD GPU |
--use_cuda_dmabuf |
CUDA DMA-BUF |
例如:
NVIDIA:
bash
ib_write_bw \
--use_cuda \
-d mlx5_0 \
12.11.7.33
测试:
GPU Memory
|
RDMA NIC
|
IB
|
RDMA NIC
|
GPU Memory
DCU/ROCm环境:
可能:
bash
ib_write_bw \
--use_rocm
9. 输出参数
| 参数 | 说明 |
|---|---|
--report_gbits |
输出Gbps |
--report_fmt |
输出格式 |
--report_per_port |
分端口显示 |
--cpu_util |
CPU利用率 |
例如:
默认:
36111 MB/sec
改:
bash
--report_gbits
显示:
288 Gbits/sec
10. PCIe / RDMA优化参数
| 参数 | 说明 |
|---|---|
--perform_warm_up |
预热 |
--no_peak |
不统计peak |
--run_infinitely |
无限测试 |
--disable_pcie_relaxed |
禁止PCIe Relaxed Ordering |
11. 服务端/客户端模式
Server
不带IP:
bash
ib_write_bw -d shca_0
等待:
Listening on port 18515
Client
带IP:
bash
ib_write_bw \
-d shca_0 \
12.11.7.33
12. 常用组合场景
① 测单QP最大带宽
bash
ib_write_bw \
-d shca_0 \
-s 1048576 \
12.11.7.33
② 测多QP压力
bash
ib_write_bw \
-d shca_0 \
-q 8 \
-s 1048576 \
12.11.7.33
③ 测400G IB极限
服务端:
bash
ib_write_bw \
-d shca_0 \
-q 16 \
-s 1048576
客户端:
bash
ib_write_bw \
-d shca_0 \
-q 16 \
-s 1048576 \
--report_gbits \
12.11.7.33
④ 大模型训练模拟
推荐:
bash
ib_write_bw \
-d shca_0 \
-q 16 \
-s 4194304 \
-t 256 \
--report_gbits \
12.11.7.33
参数:
| 参数 | 意义 |
|---|---|
| q16 | 16路并发 |
| 4MB | 大Tensor |
| tx depth 256 | 增加流水 |
13. 针对你当前400G IB环境建议测试矩阵
| 测试项 | 命令参数 | 目的 |
|---|---|---|
| 单QP | -q 1 |
基础性能 |
| 8QP | -q 8 |
并发能力 |
| 16QP | -q 16 |
极限 |
| 64KB | -s 65536 |
AI小Tensor |
| 1MB | -s 1048576 |
大通信 |
| 4MB | -s 4194304 |
大模型AllReduce |
| 双向 | -b |
全双工能力 |
| GPU RDMA | --use_cuda/--use_rocm |
真实训练场景 |
结合你前面的结果:
-q 1
64KB
36.1GB/s
≈289Gbps
下一步最有价值的是:
bash
ib_write_bw \
-d shca_0 \
-q 8 \
-s 1048576 \
--report_gbits \
12.11.7.33
这个更接近 大模型 NCCL 通信场景 。
