Skip to content

HPC-X ClusterKit IB 网络测试经验

摘要: 本文档分享了使用 NVIDIA HPC-X 工具包中的 ClusterKit 工具进行 InfiniBand (IB) 网络性能测试的经验。ClusterKit 能够自动化地在集群节点间运行成对的带宽和延迟测试,是交付验收的重要工具。

1. 环境与前置条件

1.1 验证参考环境

虽然 HPC-X 支持多种架构,但以下是本次验证的基础环境:

  • CPU: Intel Xeon Platinum 8358 (Ice Lake)
  • OS: CentOS 7.9 / RHEL 8 / Ubuntu 22.04
  • Driver: MLNX_OFED_LINUX (版本需与 OS 匹配)

1.2 前置要求

在开始测试前,请确保满足以下条件:

  1. DNS/Hosts: 集群内所有节点已配置 /etc/hosts 解析,可通过主机名互访。
  2. SSH 互信: 控制节点到所有计算节点已配置 SSH 免密登录。
  3. IB 状态: 所有节点的 IB 网卡状态为 Active (使用 ibstat 检查)。

2. 软件获取与部署

2.1 下载 HPC-X

访问 NVIDIA 官方网站下载对应 OS 和 CUDA 版本的 HPC-X 工具包:

2.2 部署安装

假设安装目录为 /opt/software/

bash
# 1. 解压安装包
cd /opt/software/
tar xvf hpcx-v2.13.1-gcc-MLNX_OFED_LINUX-5-redhat7-cuda11-gdrcopy2-nccl2.12-x86_64.tbz

# 2. 加载环境变量
# 进入解压后的目录
cd hpcx-v2.13.1-gcc-MLNX_OFED_LINUX-5-redhat7-cuda11-gdrcopy2-nccl2.12-x86_64

# 设置 HPCX_HOME
export HPCX_HOME=$PWD

# 初始化环境
source $HPCX_HOME/hpcx-init.sh
hpcx_load

验证

执行 hpcx_load 后,输入 which clusterkit.sh 应能看到工具路径。

3. ClusterKit 测试执行

3.1 确认设备名称

如果服务器有多张 IB 网卡(如计算面和存储面分离),需先确认目标网卡的设备名。

bash
ibdev2netdev

输出示例:

text
mlx5_0 port 1 ==> ib0 (Up)
mlx5_1 port 1 ==> ib1 (Up)

记下设备名,例如 mlx5_0:1 (设备名:端口号)。

3.2 准备 Hostfile

创建一个包含参与测试节点主机名的文件 hostfile

text
node01
node02
node03
node04

3.3 执行测试命令

进入工具目录并运行脚本:

bash
cd $HPCX_HOME/clusterkit/bin

# 场景:测试 ib0 (mlx5_0:1),单向带宽
./clusterkit.sh --hca_list "mlx5_0:1" --hostfile hostfile --unidirectional

3.4 关键参数说明

参数说明示例
--hca_list指定 HCA 卡和端口"mlx5_0:1""mlx5_0:1,mlx5_1:1"
--unidirectional运行单向带宽测试 (默认为双向)-
--hostfile指定节点列表文件--hostfile ./hosts

4. 结果分析

测试完成后,ClusterKit 会在当前目录下生成一个以时间戳命名的文件夹(如 20240112_161542)。

4.1 核心文件

  • bandwidth.txt: 记录节点间的带宽矩阵。
    • 关注对角线或平均值,确保接近网卡理论线速(如 HDR 为 200Gbps,NDR 为 400Gbps)。
  • latency.txt: 记录节点间的延迟矩阵。
    • 正常 IB 网络延迟通常在 1us ~ 3us 之间(取决于跳数)。

5. 常见问题与注意事项

5.1 节点数量必须为偶数

报错:must be run with an even number of nodes

ClusterKit 的默认模式是进行 Pairwise (成对) 测试。如果 hostfile 中的节点数量是奇数(例如 3 台),测试将报错。

解决方案: 移除一台节点或增加一台节点,确保参与测试的总数为偶数。

5.2 性能未达标

  • 检查 PCIe 槽位是否为 x16 Gen4/Gen5。
  • 检查 BIOS 中是否开启了 Performance 模式。
  • 使用 iblinkinfo 检查链路层是否存在误码 (Symbol Errors)。

AI-HPC Organization