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,即可量化卸载收益。
指标之间的耦合关系
这七类指标并非孤立。吞吐与 PPS 通过帧长耦合;时延与抖动共同描述转发质量;连接数决定有状态场景的容量上限;CPU 周期/包则解释“为什么吞吐上不去”。在基准报告中,建议以帧长为横轴,同时给出吞吐、PPS、时延、Cycles/Packet 四条曲线,才能完整刻画 DPU 的性能轮廓。例如 64B 时 PPS 接近线速但吞吐低,1518B 时吞吐接近线速但 PPS 低,两者交叉点往往对应最优帧长区间。
一个可复用的采集记录表示例
下表给出一次 100GbE 双向转发测试的记录模板,字段可根据实际场景增删。示例中的数值为教学假设,用于说明填写方式。
| 指标 | 口径 | 采集点 | 示例值 | 备注 |
|---|---|---|---|---|
| 吞吐 | L2 有效载荷 | RX 端口计数 | 94.2 Gbps | 1518B 帧,单向 |
| PPS | 64B 单向 | 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/pkt | 2.2 GHz,占用率 32% |
填写时注意:吞吐与 PPS 必须来自同一轮测试,否则帧长与负载不一致会导致交叉验证失败;时延与抖动应来自同一组时间戳样本;连接数测试需单独设计,避免与吞吐测试相互干扰。只有口径统一,DPU 基准数据才具备横向对比和容量规划的价值。