NVIDIA BlueField-3 DPU — 硬件操作与压力测试指南
版本: V2.9.2 | 硬件: NVIDIA BlueField-3 B3220/B3140H | DOCA: 2.9.2 | OFED: 24.10 适用系统: Debian 12 / RHEL 8.5+ / Ubuntu 20.04+ / CentOS 8+
1. 概述
1.1 什么是 BlueField-3 DPU
NVIDIA BlueField-3 DPU(Data Processing Unit)是第三代数据中心基础设施处理器,将高性能网络(ConnectX-7)与 Arm 计算核心集成在单一芯片上,用于卸载和加速基础设施任务。
| 特性 | 说明 |
|---|---|
| CPU | 最多 16 核 Arm Cortex-A78 |
| 网络 | ConnectX-7,单端口 200Gb/s,双端口 |
| 主机接口 | PCIe Gen5 x16 |
| 内存 | 板载 DDR5,支持 ECC |
| 存储 | eMMC(操作系统)、可选 NVMe |
| 管理 | BMC(Redfish API)、rshim 串口 |
| 形态 | HHHL / FHHL / OCP 3.0 SFF |
BlueField-3 相比 BlueField-2 的 memcpy 延迟最高提升 61%,STREAM 内存带宽最高提升 82%。
1.2 软件栈架构
┌──────────────────────────────────────────┐
│ 用户应用 / 工作负载 │
├──────────────────────────────────────────┤
│ DOCA SDK (驱动、库、工具、加速框架) │
├──────────────┬───────────────────────────┤
│ DPU OS │ NIC Firmware (ConnectX-7) │
│ (Linux Arm) │ │
├──────────────┼───────────────────────────┤
│ BMC FW │ 主机驱动 (DOCA-Host) │
├──────────────┴───────────────────────────┤
│ BlueField-3 硬件 │
└──────────────────────────────────────────┘
| 组件 | 说明 |
|---|---|
| DOCA | Data Center Infrastructure-on-a-Chip Architecture — DPU 编程 SDK 和运行时 |
| DPU OS | 运行在 Arm 核心上的 Linux 操作系统(基于 Debian/Ubuntu) |
| NIC FW | ConnectX-7 网络固件,负责网络加速和数据面处理 |
| BMC SW | 底板管理控制器,提供带外管理(Redfish API) |
1.3 操作模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| DPU 模式 (ECPF) | Arm 核心激活,独立操作系统,主机通过 ECPF 访问 | 基础设施卸载(默认模式) |
| Zero-Trust 模式 | 安全隔离边界,主机无法直接访问 DPU | 安全敏感场景 |
| NIC 模式 | Arm 核心禁用,仅作为标准 ConnectX-7 网卡使用 | 传统网络加速 |
模式切换通过 mlxconfig 配置 INTERNAL_CPU_OFFLOAD_ENGINE 参数:
- DPU 模式:
INTERNAL_CPU_OFFLOAD_ENGINE=0 - NIC 模式:
INTERNAL_CPU_OFFLOAD_ENGINE=1
注意:模式切换需要冷断电重启(cold power cycle),普通 reboot 不生效。
1.4 本地版本概况
| 组件 | 版本 | 文件名 |
|---|---|---|
| BFB Bundle | 2.9.2-31 | velinux-bf-bundle-2.9.2-31_25.02_debian-12_5.15_prod.bfb |
| DOCA Host | 2.9.2 | doca-host_2.9.2-012201-24.10-debian125_amd64.deb |
| MLNX OFED (Debian) | 24.10-4.1.4.0 | MLNX_OFED_LINUX-24.10-4.1.4.0-debian10.13-x86_64.iso |
| MLNX OFED (RHEL) | 24.10-4.1.4.0 | MLNX_OFED_LINUX-24.10-4.1.4.0-rhel8.5-x86_64.iso |
| DPU Update Tool | Bytedance v1.2 | dpu-update-main-Bytedance-v1.2/ |
重要提示 (2025年1月起):MLNX_OFED 作为独立产品已停止功能更新,新功能仅通过 DOCA-OFED 交付。BF3 主机端必须使用 DOCA-Host 驱动。
2. 如何下载 BF3 OS
2.1 NVIDIA 官方下载
| 组件 | 官方下载途径 |
|---|---|
| DOCA SDK & Host | developer.nvidia.com/networking/doca |
| BFB Bundle | NVIDIA Enterprise Support Portal / DOCA 下载页面 |
| MLNX OFED (旧版) | network.nvidia.com/products/infiniband-drivers |
| 固件更新包 | NVIDIA Enterprise Support Portal |
2.2 本地网络下载📁 本地下载
| 类别 | 必需文件 | 说明 |
|---|---|---|
| OS 安装 | velinux-bf-bundle-*.bfb |
BFB Bundle 镜像(固件 + OS + DOCA) |
image.bin |
RootFS 根文件系统镜像 | |
| 主机驱动 | doca-host_*.deb |
DOCA Host 运行时(BF3 必须用 DOCA-Host,不能用 MLNX_OFED) |
| 固件更新 | bf-fwbundle-*-prod.bfb |
仅固件 Bundle(ATF + UEFI + BMC + CEC + NIC FW) |
2.3 BFB 镜像类型
| 类型 | 内容 | 适用场景 |
|---|---|---|
BF-Bundle (velinux-bf-bundle-*.bfb) |
固件 + Arm OS + DOCA | 全新安装、系统恢复、大版本升级 |
BF-FW-Bundle (bf-fwbundle-*.bfb) |
仅固件(BMC + CEC + ATF + UEFI + NIC) | 仅升级固件,保留现有 OS 和配置 |
2.4 主机操作系统兼容性
| 操作系统 | 版本 | DOCA Host 安装方式 |
|---|---|---|
| Debian | 10.x, 11, 12 | dpkg -i doca-host__debian.deb |
| Ubuntu | 20.04, 22.04, 24.04 | dpkg -i doca-host__ubuntu.deb |
| RHEL / Rocky Linux | 8.6-9.5 | rpm -Uvh doca-host-*.rpm |
| CentOS | 8.x | rpm -Uvh doca-host-*.rpm |
3. 如何安装 BF3 OS ★
3.1 前置准备
3.1.1 确认 DPU 已被主机识别
$ lspci | grep -i mellanox
# 应显示 BlueField-3 设备(Device ID: a2dc)
$ lspci -d :a2dc
# 确认 BlueField-3 设备存在
3.1.2 确认 DPU 处于正确模式
$ mlxconfig -d /dev/mst/mt4123_pciconf0 query | grep -i INTERNAL_CPU
# DPU 模式下应为 EMBEDDED_CPU_MODE(1) 或 INTERNAL_CPU_OFFLOAD_ENGINE=0
3.1.3 启用 rshim 服务
$ sudo systemctl enable rshim
$ sudo systemctl start rshim
$ ls /dev/rshim0/
# 确认出现 console 等设备文件
注意:如果
/dev/rshim0/不存在,检查 DPU 是否正确插入 PCIe 插槽,并确认系统已安装 rshim 驱动(包含在 DOCA-Host 包中)。
3.1.4 安装依赖工具
# Debian/Ubuntu
$ sudo apt-get update && sudo apt-get install -y jq pv python3-pip git minicom
# RHEL/CentOS
$ sudo yum install -y epel-release
$ sudo yum install -y jq pv python3-pip git minicom
3.2 手动安装方式(bfb-install)★
步骤 1:安装 DOCA Host 驱动
$ sudo dpkg -i doca-host_2.9.2-012201-24.10-debian125_amd64.deb
$ sudo apt-get -y -f install # 修复可能的依赖问题
重要:BlueField-3 主机端必须使用 DOCA-Host 而非传统的 MLNX_OFED。DOCA-Host 推荐使用
doca-allprofile(包含完整功能套件)。
DOCA Host 提供的安装 profiles:
| Profile | 内容 | 适用场景 |
|---|---|---|
doca-all |
完整 DOCA 套件:所有驱动、库、工具 | BF3 DPU 全功能(推荐) |
doca-networking |
仅网络功能 | ConnectX 智能网卡 |
doca-ofed |
仅驱动 + 工具(等同 MLNX_OFED) | 最小化安装、兼容性优先 |
doca-roce |
仅 RDMA/RoCE | RoCE 专用 |
步骤 2:部署 BFB Bundle 到 DPU
$ sudo bfb-install --rshim rshim0 --bfb velinux-bf-bundle-2.9.2-31_25.02_debian-12_5.15_prod.bfb --rootfs image.bin
该命令执行以下操作:
- 通过 rshim 将 BFB 推送到 DPU
- 刷新 DPU eMMC 存储
- 部署根文件系统
- DPU 自动重启进入新操作系统
等待约 60 秒,DPU 将完成重启。
步骤 3:监控部署进度
$ sudo cat /dev/rshim0/misc
# 等待显示: "INFO[MISC]: DPU is ready"
典型的安装输出流程:
Pushing bfb [====================] 100%
INFO[PSC]: PSC BL1 START
INFO[BL2]: DDR POST passed
INFO[UEFI]: eMMC init
INFO[UEFI]: PCIe enum start
INFO[MISC]: Ubuntu installation started
INFO[MISC]: Installing OS image
INFO[MISC]: NIC firmware update done
INFO[MISC]: DPU is ready
注意:安装过程中严禁重启系统或 DPU,否则可能导致 DPU 不可用。如意外中断,重新运行
bfb-install即可恢复。
步骤 4:验证安装
$ minicom -D /dev/rshim0/console -b 115200 -o -S <(echo -e "cat /etc/mlnx-release\nuname -a\nexit\n")
# 输出应包含 "BlueField"
$ minicom -D /dev/rshim0/console -b 115200 -o -S <(echo -e "cat /etc/mlnx-release\nexit\n") 2>/dev/null | grep "BlueField"
步骤 5:带密码配置的安装(可选)
如需提前设置 DPU OS 密码、BMC 配置等,可通过 bf.cfg 文件:
# 生成密码 hash
$ openssl passwd -1
# 创建 bf.cfg
$ echo 'ubuntu_PASSWORD=$1$xxxx$xxxxxxxxxxxxxxxxxxxx' > bf.cfg
# 可选 bf.cfg 参数
$ cat >> bf.cfg << 'EOF'
BMC_USER="root"
BMC_PASSWORD="0penBmc"
BMC_REBOOT="yes"
WITH_NIC_FW_UPDATE="yes"
EOF
# 带配置安装
$ sudo bfb-install --rshim rshim0 --bfb <image.bfb> --config bf.cfg
3.3 自动化脚本安装(推荐批量部署)★
自动化脚本 BF3_OS_Install.sh.sh(V2.9.2)实现无人值守的 6 步安装流程。
准备文件
将以下 3 个文件放在脚本同一目录下:
doca-host_2.9.2-012201-24.10-debian125_amd64.debvelinux-bf-bundle-2.9.2-31_25.02_debian-12_5.15_prod.bfbimage.bin
执行脚本
$ chmod +x BF3_OS_Install.sh.sh
$ sudo ./BF3_OS_Install.sh.sh
脚本自动执行的 6 个步骤:
| 步骤 | 操作 | 说明 |
|---|---|---|
| Step 1 | 检查必需文件 | 验证 3 个文件是否存在,不存在则报错退出 |
| Step 2 | 检查已有 OS | 通过 minicom 检测 /etc/mlnx-release 是否包含 "BlueField",已安装则跳过 |
| Step 3 | 安装依赖 | jq, pv, python3-pip, git, minicom |
| Step 4 | 安装 DOCA Host | dpkg -i 安装驱动包,自动修复依赖 |
| Step 5 | 部署 BFB OS | bfb-install 推送镜像并等待 60 秒重启 |
| Step 6 | 验证安装 | 通过 minicom 检查 /etc/mlnx-release 和 uname -a 输出 |
安装日志写入 bf3_autoinstall.log。
3.4 BFB 镜像登录凭证
| BFB 类型 | 默认用户名 | 默认密码 |
|---|---|---|
| ByteDance velinux | root |
Duduadmin@1234 |
| NVIDIA 官方 Debian | root |
debian |
| DPU 串口控制台 | root |
111111 |
3.5 固件升级顺序
如需更新多组件固件,须按以下顺序执行:
Bundle (ATF+UEFI+BMC+CEC+NIC) → CEC → BMC → BIOS → OPN
注意:升级 BIOS/OPN 前必须停止主机端 rshim 服务:
$ sudo systemctl stop rshim
3.6 安装后主机网络配置
配置主机端 tmfifo_net0 以与 DPU 通信:
$ ip addr add 192.168.100.1/24 dev tmfifo_net0
$ ping 192.168.100.2 # 验证 DPU 网络连通性
DPU 端默认 IP:192.168.100.2(tmfifo_net0 内核设备接口)。
3.7 ByteDance 主板热键解锁(如适用)
ByteDance 新主板需执行热键解锁后才能访问 HDD 进入系统:
# 确认 BMC IP 可达
$ ping 192.168.1.10
# 执行解锁(三组 raw 命令 + 重启)
$ ipmitool -I lanplus -H 192.168.1.10 -U toutiao -P toutiao\!@# raw 0x3e 0x5c 0x00 1 0x81
$ ipmitool -I lanplus -H 192.168.1.10 -U toutiao -P toutiao\!@# raw 0x3e 0x5c 0x0a 1 0x81
$ ipmitool -I lanplus -H 192.168.1.10 -U toutiao -P toutiao\!@# raw 0x3e 0x5c 0x0b 1 0x81
$ ipmitool -I lanplus -H 192.168.1.10 -U toutiao -P toutiao\!@# power cycle
4. 如何操作 BF3 DPU 卡 ★
4.1 与 DPU 通信的三种方式
| 方式 | 接口/地址 | 用途 |
|---|---|---|
| 串口控制台 (minicom) | /dev/rshim0/console,波特率 115200 |
直接登录 DPU OS,调试 |
| 虚拟网络 (tmfifo_net0) | DPU: 192.168.100.2,主机: 192.168.100.1 |
SSH 登录、SCP 文件传输 |
| OOB 管理口 (oob_net0) | BMC DHCP 获取 IP(通常 192.168.1.10) |
BMC 管理、Redfish API、固件升级 |
4.2 登录 DPU 控制台
# 方式 1:minicom 串口
$ sudo minicom -D /dev/rshim0/console -b 115200
# 登录: root / 111111
# 方式 2:SSH 通过 tmfifo_net0(需先配置网络)
$ ssh root@192.168.100.2
4.3 IB / ETH 模式切换
DPU 支持 InfiniBand(IB)和 Ethernet(ETH)两种网络模式。
查询当前模式
$ mlxconfig -d /dev/mst/mt4123_pciconf0 query | grep LINK_TYPE
切换到 Ethernet 模式
$ mlxconfig -d /dev/mst/mt4123_pciconf0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2
$ reboot # 必须重启生效
切换到 InfiniBand 模式
$ mlxconfig -d /dev/mst/mt4123_pciconf0 set LINK_TYPE_P1=1 LINK_TYPE_P2=1
$ reboot # 必须重启生效
LINK_TYPE 值:
1= InfiniBand,2= Ethernet
4.4 常用管理命令
| 命令 | 用途 | |
|---|---|---|
| `lspci \ | grep -i mellanox` | 检查主机是否识别 DPU |
cat /etc/mlnx-release |
查看 DPU OS 版本 | |
uname -a |
查看 DPU 内核版本 | |
ip a |
列出网络接口 | |
show_gids |
显示 RDMA GID 表 | |
ibdev2netdev |
查看 RDMA 设备与网络接口映射 | |
ibv_devices |
列出 RDMA 设备 | |
ibv_devinfo -v |
查看 RDMA 设备详细信息 | |
ibstat |
查看 RDMA 设备链路状态 | |
mlxfwmanager |
查询/更新 NIC 固件 | |
flint -d |
查询固件版本 | |
mst start && mst status -v |
启动 MST 驱动并查看设备状态 | |
mlxlink -d |
查看链路状态和速度 | |
ip addr add 192.168.100.1/24 dev tmfifo_net0 |
主机端配置 DPU 通信 IP | |
ping 192.168.100.2 |
验证与 DPU 的网络连通性 |
4.5 DPU OS 日常操作
# 登录 DPU OS 后
$ ls # 查看目录
$ mkdir -p <your_directory> # 创建工作目录
$ cd BF3_Stress_package_script/bf3_stress
$ ls
$ ./main.sh # 执行压力测试脚本
$ mv -vi report <your_name> # 重命名测试报告(避免下次运行覆盖)
$ scp -r <your_name> root@192.168.100.1: # 将结果复制到主机
# 从主机复制文件到 DPU
$ scp -r ~/.ssh/id_rsa root@192.168.100.2:/root/
4.6 DPU 固件 OOB 更新(OobUpdate.sh)
OobUpdate.sh 是基于 Redfish API 的带外固件更新工具,从任意可访问 DPU BMC 的控制器主机(Linux)执行。
支持的更新模块
| 模块 | 说明 | 固件文件类型 |
|---|---|---|
BMC |
底板管理控制器固件 | .fwpkg |
CEC |
机箱环境控制器固件 | .fwpkg |
BIOS |
ATF + UEFI 固件 | .bfb (preboot-install) |
BUNDLE |
全组件固件包(ATF+UEFI+BMC+CEC+NIC) | .bfb |
FRU |
现场可更换单元信息(OEM 数据) | —(通过 -s 参数指定) |
CONFIG |
配置镜像 | .bfb |
参数对照表
| 参数 | 说明 | 示例值 |
|---|---|---|
-U |
BMC 用户名 | root 或 dingzhi |
-P |
BMC 密码 | Nvidia20240604-- |
-H |
BMC IP 地址 | 10.237.121.98 |
-T |
更新模块类型 | BMC / CEC / BIOS / BUNDLE / FRU / CONFIG |
-F |
固件文件路径 | /opt/bf3-bmc-24.04-5_ipn.fwpkg |
-o |
输出日志文件 | update.log |
-C |
恢复出厂配置(仅 BMC/BIOS) | — |
-s |
FRU OEM 数据 | "Product:Manufacturer=OEM" |
--skip_same_version |
同版本不升级 | — |
-d |
调试模式 | — |
更新示例
更新 BMC 固件:
$ ./OobUpdate.sh -U root -P Nvidia20240604-- -H 10.237.121.98 -T BMC -F /opt/bf3-bmc-24.04-5_ipn.fwpkg
输出示例:
Start to upload firmware
Process: 100% ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Restart BMC to make new firmware take effect
OLD BMC Firmware Version: BF-24.03-4
New BMC Firmware Version: BF-24.04-5
更新 CEC 固件:
$ ./OobUpdate.sh -U root -P Nvidia20240604-- -H 10.237.121.98 -T CEC -F /opt/cec1736-ecfw-00.02.0182.0000-n02-rel-debug.fwpkg
输出示例:
Start to upload firmware
Restart CEC to make new firmware take effect
OLD CEC Firmware Version: 00.02.0180.0000_n02
New CEC Firmware Version: 00.02.0182.0000_n02
更新 BIOS(ATF + UEFI):
$ ./OobUpdate.sh -U root -P Nvidia20240604-- -H 10.237.121.98 -T BIOS -F /opt/BlueField-4.7.0.13127_preboot-install.bfb
输出示例:
Start to upload firmware
Wait for BIOS ready
Old BIOS Firmware Version:
ATF--v2.2(release):4.8.0-14-gc58efcd, UEFI--4.8.0-11-gbd389cc
New BIOS Firmware Version:
ATF--v2.2(release):4.7.0-25-g5569834, UEFI--4.7.0-42-g13081ae
更新 Bundle(全组件固件):
$ ./OobUpdate.sh -U root -P Nvidia20240604-- -H 10.237.121.98 -T BUNDLE -F /opt/bf-fwbundle-2.10.0-147_25.01-prod.bfb
输出示例:
Start to do Simple Update (HTTP)
Wait for DPU(ARM) boot completion
Restart CEC to make new firmware take effect
Restart BMC to make new firmware take effect
OLD Version NEW Version
BMC : BF-24.10-24 BF-25.01-4
CEC : 00.02.0195.0000_n02 00.02.0195.0000_n02
ATF : v2.2:4.9.2-14 v2.2:4.10.0-41
NIC : 32.43.2566 32.44.1036
UEFI : 4.9.2-25 4.10.0-81
更新 FRU 自定义数据:
$ ./OobUpdate.sh -U root -P Nvidia20240604-- -H 10.237.121.98 -T FRU \
-s "Product:Manufacturer=OEM" \
-s "Product:SerialNumber=AB12345CD6" \
-s "Product:PartNumber=100-1D2B3-456V-789"
FRU 支持的 OEM 字段:
| 字段 | 参数格式 | 说明 |
|---|---|---|
| Product Manufacturer | Product:Manufacturer |
产品制造商 |
| Product Serial Number | Product:SerialNumber |
产品序列号 |
| Product Part Number | Product:PartNumber |
产品部件号 |
| Product Version | Product:Version |
产品版本 |
| Product Extra | Product:Extra |
附加信息 |
| Product Manufacture Date | Product:ManufactureDate |
生产日期(格式: DD/MM/YYYY HH:MM:SS) |
| Product Asset Tag | Product:AssetTag |
资产标签 |
| Product GUID | Product:GUID |
产品全局标识符 |
注意:FRU 写入后需依次执行:1) 重启 DPU(更新 SMBIOS 表),2) 重启 BMC(更新 FRU 信息)。
前置条件
| 条件 | 要求 |
|---|---|
| 控制主机 | Python 3 + requests 模块 |
| 网络 | 可访问 DPU BMC IP |
| BMC 凭证 | 用户名/密码有效(默认密码已完成首次修改) |
| BMC 固件版本 | >= 24.04 |
| BIOS/CONFIG/BUNDLE 更新 | 主机端 rshim 必须禁用 |
安装 Python requests 模块(离线)
$ cd dpu-update-main-Bytedance-v1.2
$ sudo pip3 install packages/requests-2.27.1-py2.py3-none-any.whl
4.7 BMC Redfish API 操作
BMC 公开 Redfish REST API 用于管理操作。
查询固件版本
$ curl -k -u root:<password> https://<bmc_ip>/redfish/v1/UpdateService/FirmwareInventory
触发固件升级(Multipart HTTP Push,推荐方式)
$ curl -k -u root:'<password>' \
https://<bmc_ip>/redfish/v1/UpdateService/update-multipart \
-F 'UpdateParameters={};type=application/octet-stream' \
-F UpdateFile=@<package_path>
触发固件升级(SimpleUpdate SCP 方式)
$ curl -k -u root:'<password>' \
-H "Content-Type: application/json" \
-X POST \
-d '{
"TransferProtocol": "SCP",
"ImageURI": "<remote_server_ip>/<path_to_bfb>",
"Targets": ["redfish/v1/UpdateService/FirmwareInventory/DPU_OS"],
"Username": "<username>"
}' \
https://<bmc_ip>/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate
电源控制
# 查询电源状态
$ curl -k -u root:<password> https://<bmc_ip>/redfish/v1/Systems/Bluefield
# 强制重启
$ curl -k -u root:<password> -X POST \
https://<bmc_ip>/redfish/v1/Systems/Bluefield/Actions/ComputerSystem.Reset \
-H "Content-Type: application/json" \
-d '{"ResetType": "ForceRestart"}'
5. 如何对 BF3 卡进行压力测试 ★
5.1 测试维度概览
| 维度 | 测试工具 | 验证目标 |
|---|---|---|
| RDMA 带宽 | ib_write_bw, doca_perftest |
PCIe 吞吐量、内存带宽 |
| 网络吞吐 | iperf3, iperf2 |
TCP/UDP 网络极限带宽 |
| 链路上/下 | mlxreg(PMAOS 寄存器) |
物理层稳定性 |
| 集成压力 | main.sh(BF3_Stress_package_script) |
综合稳定性验证 |
5.2 RDMA 带宽测试 (ib_write_bw) ★
测试拓扑
┌──────────┐ ┌──────────┐
│ mlx5_0 │── Server │ │
│ (DPU) │ │ │
├──────────┤ │ DPU OS │
│ mlx5_1 │── Client │ │
│ (DPU) │──→ 192.168.200.3 │
└──────────┘ └──────────┘
服务端(DPU OS 上执行)
$ ib_write_bw -a -b -F --report_gbits -d mlx5_0 -q 1 -x 3 -p 10000 -t 1000
| 参数 | 值 | 含义 |
|---|---|---|
-a |
— | 测试所有消息大小 |
-b |
— | 双向测试 |
-F |
— | 服务端模式(不主动连接) |
--report_gbits |
— | 以 Gb/s 为单位输出 |
-d mlx5_0 |
— | 使用 RDMA 设备 mlx5_0 |
-q 1 |
— | 1 个队列对(QP) |
-x 3 |
— | 3 次迭代 |
-p 10000 |
— | 端口 10000 |
-t 1000 |
— | 每次交换 1000 条消息 |
客户端(DPU OS 上执行)
$ ib_write_bw -a -b --report_gbits -d mlx5_1 -F 192.168.200.3 -q 1 -x 3 -p 10000 -t 1000
关键性能调优参数
| 参数 | 说明 | 默认值 | 高带宽场景推荐值 |
|---|---|---|---|
-d, --ib-dev |
RDMA 设备名 | 自动 | 始终显式指定 |
-s, --size |
消息大小 (bytes) | 65536 | 1048576(1MB)用于 BW 饱和 |
-q, --qp |
队列对数量 | 1 | 4-16 用于饱和链路 |
-t, --tx-depth |
发送队列深度 | 128 | 1024-2048 用于高 BDP 链路 |
-n, --iters |
迭代次数 | 1000 | 5000-100000 用于稳定结果 |
-R, --rdma_cm |
使用 RDMA CM(IP 连接) | Off | RoCE/Ethernet 必须开启 |
--report_gbits |
以 Gb/s 报告 | Off | 开启 |
自动化 RDMA 测试脚本(bf3_host.sh)
function bf3_dpu_os_rdma_test()
{
mkdir bf3
netdevice_1=`ifconfig -a|egrep -i "enp|ens"|grep -v enx |sed -n 1p|awk '{print$1}'|tr -d ":"`
echo "Cycle:$i device:${netdevice_1}" >>bf3/rdma_server.log
netdevice_2=`ifconfig -a|egrep -i "enp|ens"|grep -v enx |sed -n 2p|awk '{print$1}'|tr -d ":"`
echo "Cycle:$i device:${netdevice_2}" >>bf3/rdma_client.log
# 服务端
ib_write_bw -a -b -F --report_gbits -d mlx5_0 -q 1 -x 3 -p 10000 -t 1000 >>bf3/rdma_server.log &
sleep 3
# 客户端
ib_write_bw -a -b -F 192.168.200.3 --report_gbits -d mlx5_1 -q 1 -x 3 -p 10000 -t 1000 >>bf3/rdma_client.log &
}
bf3_dpu_os_rdma_test
5.3 DOCA Perftest(新一代 RDMA 测试工具)
NVIDIA 推荐使用 doca_perftest 替代传统 perftest,优势包括:原生 GPU/DMA 内存类型支持、JSON 输出、BlueField 特定卸载测试。
# 安装
$ sudo apt install doca-tools
# 服务端
$ doca_perftest --test=write_bw --device=mlx5_0 --server
# 客户端
$ doca_perftest --test=write_bw --device=mlx5_0 \
--server-ip=192.168.100.2 \
--msg-size=65536 \
--num-iters=10000
可用测试类型:write_bw, write_lat, read_bw, read_lat, send_bw, send_lat
GPU Direct RDMA 测试:
# 主机内存(基线)
$ doca_perftest --test=write_bw --memory-type=host
# GPU 内存(GDR 路径)
$ doca_perftest --test=write_bw --memory-type=gpu --gpu-id=0
5.4 网络吞吐量测试 (iperf)
# 配置 MTU 9000(巨型帧)
$ ifconfig <interface> mtu 9000
# 服务端
$ iperf -s -p 8000
# 客户端(1 小时压力测试,8 并行流)
$ iperf -c <server_ip> -i 3 -P 8 -p 8000 -t 3600
5.5 链路上/下压力测试 (mlxreg)
通过操作 PMAOS 寄存器反复切换链路状态,验证物理层稳定性。
# 链路 Down
$ mlxreg -d 13:00.0 --set "admin_status=0xe,ase=1" --reg_name PMAOS \
--indexes "module=0,slot_index=0" -y
# 链路 Up
$ mlxreg -d 13:00.0 --set "admin_status=0x1,ase=1" --reg_name PMAOS \
--indexes "module=0,slot_index=0" -y
8 端口 PCIe 地址参考:13:00.0, 45:00.0, 4d:00.0, 59:00.0, 90:00.0, c2:00.0, ca:00.0, d6:00.0
验证命令:
# 统计 Link Up 次数(应与端口数一致)
$ dmesg | grep -i "Link up" | awk -F: '{print $2,$3,$NF}' | uniq | wc -l
# 统计 Link Down 次数
$ dmesg | grep -i "Link down" | awk -F: '{print $2,$3,$NF}' | uniq | wc -l
5.6 集成压力测试脚本
# 进入 BF3 压力测试脚本目录
$ cd BF3_Stress_package_script/bf3_stress
# 执行综合压力测试
$ ./main.sh
# 重命名报告文件(避免被下次运行覆盖)
$ mv -vi report <your_test_name>
# 将测试结果复制到主机
$ scp -r <your_test_name> root@192.168.100.1:
5.7 性能基准参考
| 指标 | 预期值 | 测试条件 |
|---|---|---|
| RDMA Write BW(单向) | ~395 Gbps | 400GbE, MTU 9000, PCIe Gen5 x16 |
| RDMA Write BW(双向) | ~780 Gbps | 同上,双端口 |
| RDMA Write 延迟 (4B) | ~0.9-1.1 us | 本地回环 |
| GPU Direct RDMA Write BW | ~380 Gbps | GDR 路径 |
5.8 高延迟链路 RDMA 优化
在长距离/高 RTT 链路上(如 5ms RTT),默认参数可能导致带宽低于 1Gbps。需要扩展 QP 和 TX 深度:
# 【差】默认参数(高延迟链路):
$ ib_write_bw -d mlx5_0 -q 1 -x 3 -n 5 -s 100000000 --report_gbits -R <server>
# 【好】优化后(40G 高延迟链路):
$ ib_write_bw -d mlx5_0 -q 16 -x 3 -n 100000 -t 1024 -s 100000000 --report_gbits -R <server>
原理:每个 QP 维护独立的发送窗口,多个 QP 叠加可倍增总在线数据量。
5.9 系统化 RDMA 测试工作流
- 识别设备:
ibv_devices或ibv_devinfo - 检查链路:
ibstat— 确认 LinkUp 和正确速率 - 基线测试:
# 服务端 $ ib_write_bw -d mlx5_0 -R --report_gbits # 客户端 $ ib_write_bw -d mlx5_0 -R --report_gbits <server_ip> - QP 扩展找饱和点:
$ for qps in 1 2 4 8 16; do ib_write_bw -d mlx5_0 -R -q $qps -s 1048576 --report_gbits <server_ip> done - 消息大小扫描(吞吐量曲线):
$ for size in 64 256 1024 4096 16384 65536 262144 1048576; do ib_write_bw -d mlx5_0 -R -s $size --report_gbits <server_ip> done - GPU Direct RDMA(如适用):
$ ib_write_bw -d mlx5_0 -R --use_cuda=0 --report_gbits <server_ip> - 切换 DOCA Perftest(BlueField-3 特定功能 + JSON CI/CD 集成)
5.10 测试验证清单
| 检查项 | 命令 | 通过标准 | |
|---|---|---|---|
| DPU OS 版本 | cat /etc/mlnx-release |
包含 "BlueField" | |
| 网络接口 | ip a |
所有预期端口可见 | |
| RDMA 设备 | show_gids |
所有 mlx5 设备列出 | |
| 链路状态 | ip link show |
所有端口 UP | |
| RDMA 带宽 | ib_write_bw 输出 |
不低于基准值的 90% | |
| PCIe 链路 | lspci -vvs |
Gen5 x16 | |
| Link Up/Down 日志 | `dmesg \ | grep "Link"` | 所有端口均有 Up/Down 记录 |
| 内核错误 | `dmesg \ | grep -i error` | 无意外错误 |
6. 常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
bfb-install: command not found |
DOCA Host 未安装 | sudo dpkg -i doca-host_*.deb |
/dev/rshim0/ 不存在 |
rshim 服务未运行 | sudo systemctl enable --now rshim |
| BFB 安装超时 | DPU 无响应 | 主机断电重启,检查 PCIe 链路 |
ping 192.168.100.2 不通 |
tmfifo_net0 未配置 | 主机执行 ip addr add 192.168.100.1/24 dev tmfifo_net0 |
| 模式切换不生效 | 未做冷断电重启 | mlxconfig 修改后执行冷断电(非 warm reboot) |
| OobUpdate 报错 "Failed to enable BMC rshim" | 主机 rshim 未停止 | 更新 BIOS/BUNDLE 前 sudo systemctl stop rshim |
| ByteDance 主机无法访问 HDD | 热键锁未解锁 | 执行 3 组 ipmitool raw 解锁命令 + power cycle |
minicom 无输出 |
波特率不正确 | 始终使用 -b 115200 |
| RDMA 测试性能低 | PFC 未启用 / MTU 不足 | 启用 PFC,设置 MTU 9000 |
| DOCA Host 安装报依赖错误 | 系统缺少库 | sudo apt-get -y -f install 自动修复 |
| OobUpdate Python 模块缺失 | 未安装 requests | pip3 install requests 或离线安装本地 wheel |
| 高延迟链路 RDMA 带宽极低 | QP/TX 深度不足 | 使用 -q 16 -t 1024 参数 |
| BFB 安装后 BMC 密码错误 | 未做首次密码修改 | 默认 BMC 密码需提前通过 Redfish 修改 |
| FW 版本降级异常 | 固件版本不兼容 | FW v32.38.1002+ 需 BFB >= v2.2.0 |
日志收集
# DPU OS 端
$ dmesg > dpu_dmesg.log
$ cat /var/log/syslog > dpu_syslog.log
# 主机端
$ dmesg | grep -i mlx > host_mlx.log
$ cat bf3_autoinstall.log # 自动化安装日志
# Redfish 操作日志(OobUpdate)
$ ./OobUpdate.sh -o update.log [其他参数...]
7. 参考链接
7.1 NVIDIA 官方资源
| 资源 | 链接 |
|---|---|
| NVIDIA DOCA SDK | developer.nvidia.com/networking/doca |
| BlueField DPU 文档 | docs.nvidia.com/networking/category/bluefield |
| DOCA 安装指南 | docs.nvidia.com/doca |
| BF3 BSP 部署指南 (4.14.0) | docs.nvidia.com/networking/display/bluefieldbsp4140 |
| BF-Bundle 安装与升级 | docs.nvda.net.cn/doca/sdk/bf-bundle+installation+and+upgrade |
| DOCA Perftest 指南 | lucaberton.com/blog/nvidia-doca-perftest-rdma-benchmarking-guide |
| DPU 操作模式 | docs.nvidia.com/networking/display/bluefieldbsp4131/modes-of-operation |
| BlueField 开发者论坛 | forums.developer.nvidia.com/c/infrastructure-networking/bluefield |
7.2 内部参考文档
| 文档 | 路径 |
|---|---|
| BF3 简介 (PPTX) | BF3_操作指南/NVIDIA BlueField DPU简介.pptx |
| BF3 实际操作 (PPTX) | BF3_操作指南/BF3 DPU实际操作介绍.pptx |
| 手动安装说明 (DOCX) | BF3_操作指南/BF3_manually install -OS 操作说明.docx |
| 自动化部署指南 (DOCX) | BF3_操作指南/BF3_操作指南.docx |
| Bundle 升级指导书 (飞书) | BF3_操作指南/BF3 bundle升级指导书 - 飛書雲端文件.html |
| DPU OOB 更新工具 | BF3_操作指南/dpu-update-main-Bytedance-v1.2/ |
| DPU 更新设计文档 | BF3_操作指南/dpu-update-main-Bytedance-v1.2/doc/design/ |
7.3 本地网络路径
| 组件 | 网络路径 |
|---|---|
| BF3 BFB OS Bundle (V2.9.2) | \\10.99.184.127\Structure\Test Software\测试软体及脚本\Linux test software\BF3_操作指南 |
参考文档: NVIDIA BlueField DPU简介.pptx (2023, Li.Cece) · BF3 DPU实际操作介绍.pptx (2023, Miracle) · BF3_manually install -OS 操作说明.docx · BF3_操作指南.docx · BF3 bundle升级指导书 (飞书, 2025) · BF3_debian-os_operating command_1.txt · NVIDIA 官方 BF3 BSP 部署文档 · DOCA Perftest Benchmarking Guide · DPUIdioBench (ICS 2025)
本手册覆盖: BF3 OS 安装(手动 + 自动化脚本)、DOCA-Host 驱动部署、DPU 操作与通信(3 种方式)、IB/ETH 模式切换、OOB 固件更新(6 种模块)、BMC Redfish API、RDMA 带宽测试(ib_write_bw + doca_perftest + 参数优化)、网络吞吐测试、链路上/下压力测试、集成压力脚本操作、性能基准参考