如何确定RDMA通信的device/port/gid组合以运行ib_send_bw?
如何确定RDMA测试中使用的device/port/gid组合?
我有两台通过RDMA连接的主机(一台为SmartNIC,另一台为服务器)。若要在它们之间运行ib_send_bw -d <device> -i <port> -x <gid>命令,该如何确定应使用哪一组device/port/gid?以下是两台主机的show_gids输出示例:
主机A的show_gids输出
DEV PORT INDEX GID IPv4 VER DEV --- ---- ----- --- ------------ --- --- mlx5_0 1 0 fe80:0000:0000:0000:4ab0:2dff:fe8f:add0 v1 ens2f0np0 mlx5_0 1 1 fe80:0000:0000:0000:4ab0:2dff:fe8f:add0 v2 ens2f0np0 mlx5_0 1 2 0000:0000:0000:0000:0000:ffff:c0a8:0001 192.168.0.1 v1 ens2f0np0 mlx5_0 1 3 0000:0000:0000:0000:0000:ffff:c0a8:0001 192.168.0.1 v2 ens2f0np0 mlx5_1 1 0 fe80:0000:0000:0000:4ab0:2dff:fe8f:add1 v1 ens2f1np1 mlx5_1 1 1 fe80:0000:0000:0000:4ab0:2dff:fe8f:add1 v2 ens2f1np1 mlx5_1 1 2 0000:0000:0000:0000:0000:ffff:c0a8:0101 192.168.1.1 v1 ens2f1np1 mlx5_1 1 3 0000:0000:0000:0000:0000:ffff:c0a8:0101 192.168.1.1 v2 ens2f1np1 mlx5_2 1 0 fe80:0000:0000:0000:966d:aeff:fe9b:95e0 v1 ens4f0np0 mlx5_2 1 1 fe80:0000:0000:0000:966d:aeff:fe9b:95e0 v2 ens4f0np0 mlx5_3 1 0 fe80:0000:0000:0000:966d:aeff:fe9b:95e1 v1 ens4f1np1 mlx5_3 1 1 fe80:0000:0000:0000:966d:aeff:fe9b:95e1 v2 ens4f1np1 mlx5_4 1 0 fe80:0000:0000:0000:1270:fdff:fe86:5c7e v1 ens7f0np0 mlx5_4 1 1 fe80:0000:0000:0000:1270:fdff:fe86:5c7e v2 ens7f0np0 mlx5_5 1 0 fe80:0000:0000:0000:1270:fdff:fe86:5c7f v1 ens7f1np1 mlx5_5 1 1 fe80:0000:0000:0000:1270:fdff:fe86:5c7f v2 ens7f1np1 n_gids_found=16
主机B的show_gids输出
DEV PORT INDEX GID IPv4 VER DEV --- ---- ----- --- ------------ --- --- mlx5_2 1 0 fe80:0000:0000:0000:0040:abff:febb:0745 v2 enp3s0f0s0 mlx5_3 1 0 fe80:0000:0000:0000:0017:2eff:fef9:f1f6 v2 enp3s0f1s0 n_gids_found=2
确定可用组合的方法
1. 锁定物理连接的网卡
先明确两台主机哪块物理网卡是通过RDMA线缆直接连接的——可以通过观察网卡物理位置、网口LED指示灯状态,或者用ip link命令对应网卡硬件信息,排除无关网卡。
2. 匹配可通信的GID条目
- 优先选择带IPv4地址的GID:主机A中
mlx5_0、mlx5_1的GID条目带有明确IPv4地址(如192.168.0.1),这类GID基于IPv4网络,与对端通信兼容性更好。 - 链路本地GID适配:主机B只有
fe80开头的链路本地GID,这种情况需确保两台主机对应网卡在同一二层网络,且选择**相同GID版本(VER列)**的条目——主机B均为v2,因此主机A需选VER为v2的条目。
3. 映射ib_send_bw参数
从show_gids输出直接提取参数:
-d <device>:对应输出的DEV列(如mlx5_0)-i <port>:对应输出的PORT列(此处所有条目均为1,填1即可)-x <gid>:对应输出的INDEX列(GID的索引序号,如0、3)
示例测试组合(假设主机A的mlx5_0与主机B的mlx5_2物理连通)
- 主机A作为发送端:
ib_send_bw -d mlx5_0 -i 1 -x 3 - 主机B作为接收端:
ib_send_bw -d mlx5_2 -i 1 -x 0 -R(-R参数指定为接收端)
验证连通性
若不确定组合是否正确,可先做基础验证:
- 若网卡有IPv4地址,先用
ping测试对端地址是否可达; - 用
ibv_pingpong工具做RDMA连通性测试,确认链路正常后再运行ib_send_bw。
内容的提问来源于stack exchange,提问作者rafoo
相关产品推荐
相关产品推荐

