文件最后提交记录最后更新时间
1 天前
1 个月前
1 天前
4 天前
README

rdma-perftest

工具基于开源社区 rdma-perftest 适配使能NPU,达成测试昇腾环境的带宽和时延的能力。

工具规格说明

场景 功能规格 控制面建链
RDMA(使用CPU内存) 与开源社区 rdma/perftest 保持一致 TCP/CM
NDR 1. 支持标准 RoCE 协议
1.1 带宽测试支持:send/read/write/write_imm/atomic;
1.2 时延测试值:send/read;
2. 支持 HyperRoCE 协议
2.1 带宽测试支持:write/write_imm
TCP/CM
NDA 1. 支持 read/write 带宽测试;
2. 支持 read/write 时延测试;
3. QP数量支持最大支持32
TCP

编译说明

依赖安装

编译依赖 verbs,需要提前在环境上安装 verbs

# 安装 verbs 相关依赖
yum install -y libibverbs rdma-core
yum install -y libibverbs-devel rdma-core-devel
yum install libibverbs-utils

# 编译相关内容生成:
yum install -y libtool

Ubuntu/Debian 系统使用 apt 安装对应依赖:

# 安装 verbs 相关依赖
apt install -y libibverbs1 rdma-core
apt install -y libibverbs-dev
apt install -y ibverbs-utils

# 编译相关内容生成:
apt install -y libtool

注:
NDA带宽/时延测试,请先安装NDA测试算子:

NDA 离线算子相关代码及安装说明详见 nda-offline-operator 目录。

源码放到环境上后,转换一下格式:

dos2unix *.sh

基础编译(无CANN支持)

如果不需要CANN支持,可以仅编译基础功能:

bash autogen.sh
./configure
make

启用CANN支持的编译

如果要在有CANN环境的系统上启用CANN支持,按如下步骤操作:

# 导入cann环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# 配置和编译项目(支持NDA功能)
bash autogen.sh
./configure --enable-cann --with-cann=$ASCEND_TOOLKIT_HOME --enable-cust --with-cust-opapi=$ASCEND_CUSTOM_OPP_PATH
make

启用UBNIC NDR支持的编译

如果需要支持UBNIC NDR测试,按如下步骤操作:

bash autogen.sh
./configure --enable-cann --with-cann=$ASCEND_TOOLKIT_HOME --enable-hrn
make

启用Hyper RoCE支持的编译

如果要在支持Hyper RoCE扩展能力的系统上启用Hyper RoCE,按如下步骤操作:

bash autogen.sh
./configure --enable-cann --with-cann=$ASCEND_TOOLKIT_HOME --enable-hyper_veroce --enable-hrn
make

依赖说明

  1. 启用 Hyper RoCE 需要环境已安装 ibv_extend.h 头文件及 libibv_extend 库,configure 阶段会自动检查依赖,若缺失会报错提示;
  2. 启用 NDA 编译,需要环境安装libibv_extend 库,configure 阶段会自动检查依赖,若缺失会报错提示;
  3. 启用 UBNIC NDR编译,需要环境安装hrn5-rdmav34 库,configure 阶段会自动检查依赖,若缺失会报错提示。

启用NUMA支持的编译

在双路服务器上通过 --enable-numa 启用 NUMA-aware WQE 分配,使用 --numa-aware 参数可在运行时将 WQE buffer 绑定到本地 NUMA node。

# 安装依赖(openEuler/CentOS 需 numactl-devel,Ubuntu/Debian 需 libnuma-dev)
yum install -y numactl-devel

# 编译
bash autogen.sh
./configure --enable-numa
make

运行依赖

# 导入cann环境变量
#source {CANN 安装目录下的set_env.sh路径},样例如下:
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# 导入 nda-offline-operator 算子的环境变量, 
# source {算子安装目录下的set_env.bash路径},样例如下:
source /home/test/vendors/customize/bin/set_env.bash

# YUNSILICON测试场景,导入 IBV_EXTEND_DRIVERS 环境变量
# export IBV_EXTEND_DRIVERS={网卡 ibv_extend 扩展驱动},样例如下:
export IBV_EXTEND_DRIVERS=/usr/lib64/libxscale_nda.so

测试指令示例

新增参数:
--use_cann: 用于指定device id
--use_direct_async: 用于测试 direct async 带宽和时延
--use_qubuf_dma_mode: 用于测试 direct async时,指定queue buf dma mode,对应类型如下:DEFAULT,INDEP_UB,MAX,对于 YUNSILICON 设备自动识别

UBNIC NDR 参数(需要编译时启用 --enable-hrn):
(UBNIC NDR测试,必须指定--use_qubuf_dma_mode=INDEP_UB参数)
--lb_index[=<0,1,...>]: 带宽测试时,启用负载均衡,指定负载均衡平面索引

Hyper RoCE 参数(需编译时启用 --enable-hyper_veroce,仅 write/write_imm 测试可用):
--use_hyper_roce: 启用 HYPER_ROCE 扩展 QP 属性
--use_sack: 启用 HYPER_ROCE SACK(选择性重传),需配合 --use_hyper_roce
--use_src_udp_port[=<port,...>]: 配置 HYPER_ROCE UDP 源端口列表,需配合 --use_hyper_roce
--use_lb_mode=: 设置 HYPER_ROCE 负载均衡模式(非负整数),需配合 --use_hyper_roce

UBNIC inline reduce 参数(需编译时启用 --enable-hrn):
--inline_reduce:启用inline reduce特性
--reduce_type:指定inline reduce类型
--reduce_op:指定inline reduce op类型

NUMA-aware 参数(需编译时启用 --enable-numa):
--numa-aware: 启用 NUMA 本地内存分配,将 WQE buffer 绑定到处理核所在 NUMA node

UBNIC 测试命令使用示例

UBNIC NDR Write 双向带宽测试示例:

# Server
./ib_write_bw -d hrn5_6 -x 1 -s 65536 -q 4 -m 4096 -F -c RC --run_infinitely --report_gbits -b --lb_index=0,1 --use_cann=1 --use_qubuf_dma_mode=INDEP_UB

# Client  
./ib_write_bw -d hrn5_2 -x 1 -s 65536 -q 4 -m 4096 -F -c RC --run_infinitely --report_gbits -b --lb_index=0,1 --use_cann=0 --use_qubuf_dma_mode=INDEP_UB 192.168.10.200

UBNIC NDA Write 时延测试示例:

# Server
./ib_write_lat -d hrn5_0 --use_cann=2 -s 4096 --report_gbits -F --use_direct_async --use_qubuf_dma_mode=INDEP_UB

# Client  
./ib_write_lat -d hrn5_2 --use_cann=6 -s 4096 --report_gbits -F --use_direct_async --use_qubuf_dma_mode=INDEP_UB 30.30.30.101

YUNSILICON 测试命令使用示例

YUNSILICON NDA read时延测试示例:

# Server
./ib_read_lat -a -d xscale_3 -i 1 --use_cann=0 --tclass=40  --report_gbits -F --use_direct_async

# Client
./ib_read_lat -a -d xscale_2 -i 1 --use_cann=4 --tclass=40  --report_gbits -F --use_direct_async 192.168.1.103

YUNSILICON NDA write带宽测试示例:

# Server
./ib_write_bw -a -d xscale_3 -i 1 --use_cann=0 --tclass=40  --report_gbits -F --use_direct_async -n 5120

# Client
./ib_write_bw -a -d xscale_2 -i 1 --use_cann=4 --tclass=40  --report_gbits -F --use_direct_async -n 5120 192.168.1.103

YUNSILICON NDR write带宽测试示例:

# Server
./ib_write_bw -a -d xscale_3 -i 1 --use_cann=0 --tclass=40  --report_gbits -F

# Client
./ib_write_bw -a -d xscale_2 -i 1 --use_cann=4 --tclass=40  --report_gbits -F 192.168.1.103

YUNSILICON Send 时延测试:

# Server
./ib_send_lat -d xscale_3 -i 1 --report_gbits -F -a --use_cann=0 -n 12800 -I 0

# Client
./ib_send_lat -d xscale_2 -i 1 --report_gbits -F -a --use_cann=4 -n 12800 192.168.1.103 -I 0