【DPDK】高性能网络测试工具Testpmd带宽计算和结果解读
Testpmd 作为 DPDK 生态中功能强大的转发测试工具,不仅能生成高流量负载,还能通过精细化的统计功能提供精准的性能数据。本文将系统讲解如何使用 Testpmd 进行带宽测试,深入解读测试结果中的关键指标,并提供性能优化的实用策略。
一、Testpmd 带宽测试准备
1.1 硬件与系统环境要求
进行带宽测试前,需确保硬件和系统满足基本要求
-
网卡:支持 DPDK 的高性能网卡(如 10G/25G/100G 以太网网卡),需提前绑定到 DPDK 兼容驱动(如
vfio-pci或igb_uio) -
CPU:多核处理器(推荐 8 核及以上),确保有足够的核心用于数据包转发
-
内存:至少 16GB 内存,建议按 NUMA 节点分布配置
-
系统优化:
-
关闭 CPU 节能模式(
intel_pstate=performance) -
禁用 NUMA 自动平衡(
echo 0 > /proc/sys/kernel/numa_balancing) -
隔离测试用 CPU 核心(通过
isolcpus内核参数) -
关闭防火墙和无关服务,避免资源抢占
-
二、双机对测拓扑与测试模式
双机对测是验证网络带宽的常用场景,通过两台设备互发流量,可真实模拟实际通信环境。这里只讨论在没有打流仪的情况下,用testpmd进行打流测试的情况。
2.1 双机对测拓扑结构-单向测试

*拓扑说明
- 设备 A 和设备 B 均为支持 DPDK 的服务器, 两台设备通过至少 1 条高速链路连接(如 100G 光纤)
- 单向测试:设备 A 发送流量,设备 B 接收,设备A配置成txonly,设备B配置成rxonly模式
2.2 双机对测拓扑结构-转发测试

拓扑说明
- 设备 A 和设备 B 均为支持 DPDK 的服务器, 两台设备通过至少2 条高速链路连接(如 100G 光纤)
- 转发测试: 设备A配置成txonly,设备B配置成io模式
- 转发测试:设备 A 发送流量,设备 B 的Port0接收数据并转发给Port1。同理,设备B的Port1接收数据并转发给Port0(这里不知道我理解是否有误,还需再确认)
三、带宽计算方法与关键指标解析
查看转发性能:
testpmd> show port stats all
testpmd> show fwd stats all
3.1 show fwd stats all 结果分析
测试stop后会显示结果,和show fwd stats all的显示是一样的,如下图所示:
指标说明
以下是整理后的 DPDK testpmd show fwd stats all 关键指标解析表(不包含你的具体数据):
| 指标 | 含义 |
|---|---|
| RX-packets | 接收的报文总数(Received packets) |
| TX-packets | 成功转发的报文数(Transmitted packets) |
| RX-dropped | 接收路径丢弃的报文数(通常因缓冲区不足或配置错误) |
| TX-dropped | 发送路径丢弃的报文数(通常因发送队列满或硬件错误) |
| Accumulated RX-total | 所有端口的累计接收报文数 |
补充说明
- RX/TX 不对称:若
RX-packets高但TX-packets为0,需检查转发模式(如mac/iofwd)或硬件队列配置。 - 丢包分析:
RX-dropped或TX-dropped非零时,可能需调整缓冲区大小或排查硬件瓶颈。 - 多队列场景:需结合
Queue编号(如Queue=0/4)确认流量是否均匀分布。
此表可用于快速定位转发性能或配置问题。
3.3 show port stats all 结果分析
show port stats all 显示结果:
指标说明
| 指标 | 全称 | 含义与作用 |
|---|---|---|
RX-packets |
接收数据包总数 | 累计接收的所有数据包数量(含正常包和错误包) |
RX-bytes |
接收字节总数 | 累计接收的字节数(含帧头、payload 和 CRC) |
RX-errors |
接收错误总数 | 硬件检测到的接收错误(含 CRC 错误、帧长错误等) |
RX-missed |
接收丢失包数 | 因硬件队列满未被处理的接收包数 |
RX-nombuf |
内存不足丢弃数 | 因内存池无空闲缓冲区丢弃的接收包数 |
TX-packets |
发送数据包总数 | 累计发送的所有数据包数量 |
TX-bytes |
发送字节总数 | 累计发送的字节数(含帧头、payload 和 CRC) |
TX-errors |
发送错误总数 | 硬件检测到的发送错误(含冲突、载波丢失等) |
Rx-pps |
接收包率 | 统计周期内每秒接收的数据包数 |
Rx-bps |
接收比特率 | 统计周期内每秒接收的比特数(实时带宽) |
Tx-pps / Tx-bps |
发送包率 / 比特率 | 统计周期内每秒发送的数据包数和比特数 |
3.4 带宽计算
实际带宽(Gbps)的标准计算公式为:
实际带宽(Gbps) = (统计周期内发送字节增量 × 8) / (统计周期时间 × 10^9)
数据获取方法
1. 统计周期内发送字节增量(ΔTX-bytes)
通过 show port stats all 命令分两次获取 TX-bytes 数值,计算差值:
- 第一次执行命令,记录端口的
TX-bytes为TX1; - 间隔
Δt时间(如 1 秒)后再次执行,记录TX-bytes为TX2; - 字节增量:
ΔTX-bytes = TX2 - TX1。
2.统计周期时间(Δt)
- 若通过
--stats-period=N配置自动统计,周期时间为N秒(如--stats-period=1表示周期 1 秒); - 手动统计时,需用计时器记录两次执行命令的间隔时间。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)