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 参数:

注意:模式切换需要冷断电重启(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-all profile(包含完整功能套件)。

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

该命令执行以下操作:

  1. 通过 rshim 将 BFB 推送到 DPU
  2. 刷新 DPU eMMC 存储
  3. 部署根文件系统
  4. 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 个文件放在脚本同一目录下:

执行脚本


$ 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-releaseuname -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.2tmfifo_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 q 查询固件版本
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 用户名 rootdingzhi
-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 测试工作流

  1. 识别设备ibv_devicesibv_devinfo
  2. 检查链路ibstat — 确认 LinkUp 和正确速率
  3. 基线测试
    
       # 服务端
       $ ib_write_bw -d mlx5_0 -R --report_gbits
       # 客户端
       $ ib_write_bw -d mlx5_0 -R --report_gbits <server_ip>
    
  4. 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
    
  5. 消息大小扫描(吞吐量曲线):
    
       $ 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
    
  6. GPU Direct RDMA(如适用):
    
       $ ib_write_bw -d mlx5_0 -R --use_cuda=0 --report_gbits <server_ip>
    
  7. 切换 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 官方资源

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 + 参数优化)、网络吞吐测试、链路上/下压力测试、集成压力脚本操作、性能基准参考