判断是否使用NVLink和RDMA

半兽人 发表于: 2026-03-16   最后更新时间: 2026-03-16 16:22:04  
{{totalSubscript}} 订阅, 12 游览

判断是否使用 NVLinkRDMA,只需要看 两类信息

1)GPU拓扑(是否有 NVLink)
2)NCCL 日志(是否走 RDMA)

一、判断 GPU 之间是否使用 NVLink

在每台服务器上执行:

nvidia-smi topo -m

输出类似:

        GPU0    GPU1    GPU2    GPU3    GPU4    GPU5    GPU6    GPU7
GPU0     X      NV4     NV4     NV4     SYS     SYS     SYS     SYS
GPU1    NV4      X      NV4     NV4     SYS     SYS     SYS     SYS
GPU2    NV4     NV4      X      NV4     SYS     SYS     SYS     SYS
GPU3    NV4     NV4     NV4      X      SYS     SYS     SYS     SYS

关键看这些标识:

标识 含义
NV NVLink
PIX 同一个 PCIe Switch
PHB 同一个 CPU
SYS 跨 CPU

例如:

NV4

说明:

GPU之间有4条 NVLink

如果全部是:

PIX / PHB / SYS

说明:

没有 NVLink,只是 PCIe。

二、判断 NVLink 是否真的在使用

执行:

nvidia-smi nvlink --status

输出示例:

GPU 0:
 Link 0: Active
 Link 1: Active
 Link 2: Active
 Link 3: Active

如果看到:

Active

说明 NVLink 已连接。

如果:

Inactive

说明没有使用。


三、判断是否使用 RDMA

这个要看 NCCL 日志

启动推理前加环境变量:

export NCCL_DEBUG=INFO

然后运行 vLLM 或 PyTorch。

日志里会出现类似:

NCCL INFO NET/IB : Using mlx5_0

含义:

IB = Infiniband

说明:

正在使用 RDMA。

如果看到:

NCCL INFO NET/Socket

说明:

使用普通 TCP 网络。

速度会慢很多。

四、再确认服务器是否有 RDMA 网卡

执行:

ibv_devinfo

如果有输出:

hca_id: mlx5_0

说明机器有:

Infiniband / RoCE 网卡。

如果命令不存在:

说明系统没有 RDMA 驱动。

五、Kubernetes 环境额外检查

如果你在 K8s 里运行:

需要确认 Pod 能看到 RDMA 设备。

进入 Pod:

ls /dev/infiniband

如果看到:

uverbs0
rdma_cm

说明 RDMA 已挂载进容器。

六、最简单的判断方法(推荐)

其实只看两条就够了:

1 看 NVLink

nvidia-smi topo -m

2 看 NCCL 是否走 RDMA

运行推理时看日志:

NCCL INFO NET/IB

七、一个非常关键的现实情况

很多公司买了:

  • H100
  • Infiniband 网卡

但最后 实际跑的是 TCP 网络

因为:

  • RDMA 没配置
  • K8s 没挂设备
  • NCCL 选错网卡

结果性能可能差 5~20倍

更新于 2026-03-16
在线,9小时前登录

查看LLM更多相关的文章或提一个关于LLM的问题,也可以与我们一起分享文章