4. 性能基准指标体系

在 DPU 性能基准测试中,最容易出现的问题不是“测不出来”,而是“测出来的数字对不上”。同一块 Marvell DPU,A 团队报告 200 Gbps 吞吐,B 团队却只有 120 Gbps,差异往往不在硬件,而在指标定义与采集口径。本节把 DPU 基准中最常用的七类指标逐一拆开:它们分别度量什么、在什么位置采集、用什么公式计算、哪些边界条件会让数字失真。

吞吐:区分 L1 与 L2 口径

吞吐(Throughput)描述单位时间内成功传输的数据量,单位通常是 Gbps 或 Mbps。DPU 场景下必须明确是线速吞吐(L1)还是有效载荷吞吐(L2/L3)。以 100GbE 端口为例,L1 线速为 100 Gbps,但扣除以太网前导码(7B)、SFD(1B)、帧间隙 IFG(12B)以及 CRC(4B)后,L2 有效吞吐上限约为 100 × 1500/1538 ≈ 97.5 Gbps(以 1500B 帧计)。若测试工具按 L2 统计而报告方按 L1 宣称,就会出现约 2.5% 的系统性偏差。

采集口径上,推荐以接收端成功交付到目标队列的字节数为分子,以测试持续时间为分母。发送端计数会包含重传与丢弃,不能作为吞吐依据。对于双向测试,应分别报告 TX 与 RX,避免用“双向之和”掩盖单向瓶颈。

时延:单向与往返必须声明

时延(Latency)是报文从进入测量点到离开测量点的时间差。DPU 基准中常见三种口径:

  • 端口到端口时延:报文进入 ingress 端口到从 egress 端口发出的时间,反映转发路径开销;
  • 应用层时延:从 socket 写入到对端 socket 读出的时间,包含协议栈与驱动开销;
  • 往返时延 RTT:请求发出到响应返回,通常是单向时延的两倍加处理时间。

采集方式推荐硬件时间戳(PTP/硬件打点),精度可达纳秒级;软件时间戳受中断合并、调度抖动影响,误差常在微秒级。报告时必须写明:测量点位置、是否含协议栈、是否开启 offload。例如“DPU 转发时延 8 μs”若不说明是端口到端口还是 socket 到 socket,读者无法复现。

抖动:时延的稳定性度量

抖动(Jitter)描述时延的波动程度,常用指标有峰峰值抖动(最大时延减最小时延)和相邻包时延差(IPDV,RFC 3393)。对 DPU 而言,抖动比平均时延更能反映调度、队列和中断处理的稳定性。采集时建议连续采样至少 10 万个报文,输出 P50、P99、P99.9 和最大值。若 P99.9 远高于 P50,说明存在长尾,通常与中断合并、NUMA 跨节点访问或流表 miss 有关。

PPS:小包场景的核心指标

PPS(Packets Per Second)是每秒处理报文数,决定 DPU 在 64B 小包下的转发能力。它与吞吐的关系为:吞吐 = PPS × 平均帧长 × 8。64B 帧的 L1 线速下,100GbE 对应约 148.8 Mpps。测试 PPS 时必须固定帧长,并区分单向 PPS与双向 PPS。很多 DPU 在 64B 小包下受限于包处理流水线而非带宽,因此 PPS 往往先于吞吐达到瓶颈。

连接数:有状态转发的容量边界

连接数(Connections)指 DPU 同时维护的流表或会话条目数,常见于防火墙、NAT、负载均衡等有状态场景。采集口径包括:已建立连接数、新建连接速率(CPS)、并发连接上限。测试时需明确连接老化时间、是否启用硬件卸载。例如流表卸载到硬件后,连接数上限由 TCAM/SRAM 容量决定;未卸载时受 CPU 与内存限制。报告应给出“在 X 万并发下,新建速率仍能维持 Y CPS”这样的组合结论。

带宽利用率:链路效率的直观表达

带宽利用率 = 实际吞吐 / 链路理论带宽 × 100%。它本身不是独立指标,而是吞吐的归一化表达。需要注意的是,利用率的分母应明确是 L1 还是 L2。若按 L1 计算,64B 小包在 100GbE 上即使达到 148.8 Mpps,利用率也只有约 100%;但若按 L2 有效载荷计算,利用率会显著下降。因此带宽利用率必须与帧长、口径一起报告。

CPU 周期/包:能效与卸载效果的关键

CPU 周期/包(Cycles per Packet)衡量 DPU 处理每个报文消耗的 CPU 周期数,是评估卸载效率的核心指标。计算公式为:

Cycles/Packet = (CPU 频率 × 测量时间 × CPU 占用率) / 处理报文总数

例如某 ARM 核运行在 2.2 GHz,测量 10 秒,CPU 占用率 35%,处理了 1.2 亿个包,则 Cycles/Packet = (2.2e9 × 10 × 0.35) / 1.2e8 ≈ 64.2。该值越低,说明硬件卸载越充分。采集时需固定 CPU 频率(关闭调频)、绑定核心、排除其他进程干扰。若开启硬件卸载后该值从 200 降到 60,即可量化卸载收益。

DPU 性能基准指标体系与采集口径 采集点参照 发送端 TX DPU 转发路径 接收端 RX L1/L2 计数 硬件时间戳 吞吐 Throughput 单位:Gbps / Mbps 口径:L1 线速 vs L2 有效载荷 采集:RX 成功交付字节数 / 时间 注意:100GbE L2 上限 ≈ 97.5 Gbps 时延 Latency 单位:μs / ns 口径:端口到端口 / socket 到 socket 采集:硬件时间戳(PTP) 注意:须声明是否含协议栈 抖动 Jitter 单位:μs / ns 口径:峰峰值 / IPDV(RFC 3393) 采集:≥10 万包,输出 P50/P99/P99.9 注意:长尾反映调度稳定性 PPS 包转发率 单位:Mpps 口径:固定帧长(64B 最严苛) 采集:单向 / 双向分别统计 注意:100GbE 64B 线速 ≈ 148.8 Mpps 连接数 Connections 单位:条 / CPS 口径:并发连接 / 新建速率 采集:流表条目 + 老化时间 注意:区分硬件卸载与软件路径 带宽利用率 & CPU 周期/包 利用率 = 实际吞吐 / 理论带宽 Cycles/Packet = 频率×时间×占用率 / 包数 采集:固定频率、绑核、排除干扰 注意:卸载后 Cycles/Packet 显著下降

指标之间的耦合关系

这七类指标并非孤立。吞吐与 PPS 通过帧长耦合;时延与抖动共同描述转发质量;连接数决定有状态场景的容量上限;CPU 周期/包则解释“为什么吞吐上不去”。在基准报告中,建议以帧长为横轴,同时给出吞吐、PPS、时延、Cycles/Packet 四条曲线,才能完整刻画 DPU 的性能轮廓。例如 64B 时 PPS 接近线速但吞吐低,1518B 时吞吐接近线速但 PPS 低,两者交叉点往往对应最优帧长区间。

采集口径三原则:第一,明确测量点(端口、驱动、socket);第二,明确统计层(L1/L2/L3);第三,明确环境条件(帧长、连接数、offload 开关、CPU 频率)。任何一项缺失,数字都不可比。

一个可复用的采集记录表示例

下表给出一次 100GbE 双向转发测试的记录模板,字段可根据实际场景增删。示例中的数值为教学假设,用于说明填写方式。

指标口径采集点示例值备注
吞吐L2 有效载荷RX 端口计数94.2 Gbps1518B 帧,单向
PPS64B 单向RX 端口计数112.5 Mpps未达线速,受流表限制
时延端口到端口硬件时间戳P50 = 6.8 μs关闭中断合并
抖动IPDV硬件时间戳P99.9 = 21 μs存在长尾
连接数并发 + CPS流表统计200 万 / 80 万 CPS硬件卸载开启
带宽利用率L1 归一化计算值94.2%分母 100 Gbps
CPU 周期/包单核绑定perf 计数58 cycles/pkt2.2 GHz,占用率 32%

填写时注意:吞吐与 PPS 必须来自同一轮测试,否则帧长与负载不一致会导致交叉验证失败;时延与抖动应来自同一组时间戳样本;连接数测试需单独设计,避免与吞吐测试相互干扰。只有口径统一,DPU 基准数据才具备横向对比和容量规划的价值。