3. 使用ibv_devinfo查看设备信息
任务目标
在已安装 InfiniBand 软件栈(如 OFED)的主机上,通过 ibv_devinfo 命令查看 RDMA 网卡设备信息,并解析输出中的关键参数,判断设备是否处于可用状态。
前置条件
- 已安装
rdma-core或 OFED 软件包(包含ibv_devinfo工具) - 已加载内核模块:
mlx5_core、ib_uverbs、ib_core(Mellanox 网卡为例) - 设备已连接并处于 Active 状态(可通过
ibstatus交叉确认)
运行命令
直接执行以下命令查看所有 RDMA 设备信息:
ibv_devinfo -v
若需查看指定设备(如 mlx5_0):
ibv_devinfo -d mlx5_0 -v
关键输出解析
以下为典型输出及对应含义(以 Mellanox ConnectX-5 为例):
hca_id: mlx5_0
transport: InfiniBand (0)
fw_ver: 16.32.1010
node_guid: 0x248a070300a1b2c3
sys_image_guid: 0x248a070300a1b2c3
vendor_id: 0x02c9
vendor_part_id: 4115
hw_ver: 0x0
port 1:
state: PORT_ACTIVE (4)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 2
port_lid: 6
port_lmc: 0
link_layer: InfiniBand
port 2:
state: PORT_DOWN (1)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 0
port_lid: 0
port_lmc: 0
link_layer: InfiniBand
| 参数 | 含义 | 正常判定 |
|---|---|---|
state | 端口状态 | PORT_ACTIVE (4) 表示链路正常;PORT_DOWN (1) 表示未连接或故障 |
active_mtu | 当前生效的 MTU 值 | 4096 为 InfiniBand 默认最大值;若为 2048 说明对端协商为较低值 |
fw_ver | 固件版本 | 与厂商发布版本比对,确认是否过旧 |
link_layer | 链路层协议 | InfiniBand 或 Ethernet(RoCE 模式) |
port_lid | 本地 LID(子网内地址) | 非 0 表示已获取有效 LID;0 且 state=DOWN 时说明未接入子网 |
验证方法
按以下步骤确认设备工作正常:
- 状态检查:执行
ibv_devinfo,观察目标端口state是否为PORT_ACTIVE (4)。若为PORT_DOWN,检查线缆连接和交换机端口。 - 速率确认:执行
ibstatus查看当前链路速率(如100 Gb/sec),与交换机端口配置比对。 - 连通性测试:在另一台主机上执行
ibping -S(服务端)和ibping -G <远端GID>(客户端),收到响应即表示数据通路正常。
通过条件:端口状态为 PORT_ACTIVE,且 ibstatus 显示的速率与交换机端口配置一致,即可判定设备工作正常。
常见问题
- 命令不存在:安装 rdma-core:
apt install rdma-core或yum install rdma-core - 设备未列出:确认内核模块已加载:
modprobe mlx5_core;检查ibstat是否能看到设备 - 端口 DOWN:检查线缆、交换机端口状态,以及子网管理器(OpenSM)是否运行:
ps aux | grep opensm