| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 天前 | ||
| 1 个月前 | ||
| 1 天前 | ||
| 4 天前 |
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
依赖说明:
- 启用 Hyper RoCE 需要环境已安装
ibv_extend.h头文件及libibv_extend库,configure阶段会自动检查依赖,若缺失会报错提示;- 启用 NDA 编译,需要环境安装
libibv_extend库,configure阶段会自动检查依赖,若缺失会报错提示;- 启用 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