行业解决方案

用多队列与大包参数提升物理机网络测试质量

物理机网络吞吐测试不能只看一次带宽峰值。通过合理配置网卡多队列、核亲和性、帧大小和双向流量,并结合基线、分段测试与结果复核,可以更准确地判断链路、网卡、CPU和系统参数是否成为瓶颈。

做好物理机网络吞吐测试,关键不只是把带宽跑满,而是确认测试结果是否能够代表真实链路能力。单队列、默认小包和单向单连接,往往会让CPU、网卡中断或发送端成为瓶颈。采用多队列与大包参数后,再配合分层验证,才能区分是链路速度不足,还是主机处理能力没有跟上。

先建立可复现的测试基线

测试前应记录两台物理机的网卡型号、链路协商速率、驱动版本、操作系统版本和网卡端口连接方式。1GbE、10GbE、25GbE等链路的理论上限不同,实际吞吐还会受到协议开销、交换机端口、存储来源和CPU负载影响。

  1. 确认两端网卡均已协商到预期速率,检查光模块、双绞线或光纤类型是否匹配。
  2. 让两台主机尽量接入同一交换机或同一测试网络,先排除跨路由、QoS和防火墙策略的干扰。
  3. 停止备份、镜像同步和大型下载等无关任务,并记录测试时的CPU使用率、软中断和丢包情况。
  4. 使用iperf3等成熟工具,先进行单连接基线,再逐步增加并发连接数量。

在相同时间、相同方向和相同帧大小下重复测试三次以上,取稳定区间进行比较,不要只采用一次瞬时峰值。这样得到的物理机网络吞吐测试结果更适合用于故障定位和容量评估。

多队列为什么会影响吞吐

让网卡工作分摊到多个CPU

现代网卡通常支持接收队列和发送队列。多队列开启后,网卡可以把不同连接的数据分配到多个队列,再由不同CPU核心处理。若只启用一个队列,即使主机拥有许多核心,网络处理仍可能集中在单个核心上,表现为总带宽上不去但某个核心持续繁忙。

可以使用Linux的ethtool查看网卡队列数量、驱动信息和中断配置。队列数量不宜盲目调到最大:在4到8个核心的测试环境中,先从4或8个队列开始通常更容易观察;核心较多、链路速率较高时,再逐步增加。最终数量取决于网卡驱动、CPU拓扑和并发连接数。

配合RSS与中断亲和性

RSS可以把不同流量分散到多个接收队列,但队列如果集中落在同一个NUMA节点之外,仍可能增加访问延迟。测试时应观察中断是否均匀分布,并让网卡所在PCIe设备与处理网络任务的CPU尽量保持在同一NUMA节点。

用多队列与大包参数提升物理机网络测试质量

常见误区是只看队列数量,不看实际中断分布。若增加队列后吞吐没有改善,却出现更多上下文切换或CPU消耗,说明队列过多、并发不足,或者核亲和性配置不合理。此时应回退到较少队列重新比较。

大包参数要分阶段使用

大包通常能减少单位数据量对应的协议处理次数,因此在连续传输场景中有助于降低CPU开销。常见对比方式是先使用约1500字节的标准帧,再在端到端设备均支持时测试约9000字节的大帧。帧大小必须在发送端、接收端、交换机端口和中间链路上保持兼容,否则可能出现丢包、分片或直接无法通信。

测试参数适合观察的问题主要限制
标准帧接近多数通用网络环境的实际表现CPU处理开销相对较高
大帧观察连续大流量下的链路效率要求全路径设备支持,不能直接代表所有业务
多并发连接验证多队列和RSS的分摊效果连接过多会引入额外调度开销

因此,大包参数不应替代标准帧测试,而应作为第二组对照。若标准帧吞吐偏低、大帧明显改善,瓶颈可能在CPU处理、队列配置或协议栈开销;若两者都偏低,则应继续检查链路协商、驱动、交换机端口和PCIe带宽。

一套可执行的测试流程

  1. 单连接基线:使用标准帧进行单向发送和接收,记录吞吐、重传、丢包和两端CPU占用。
  2. 增加并发:逐步增加到4、8、16个并发连接,观察吞吐是否随队列数量增加而提升。
  3. 核对队列:调整网卡队列和RSS设置,每次只改变一个变量,避免无法判断改动效果。
  4. 测试大帧:确认全路径支持后,用约9000字节的大帧重复单向、反向和双向测试。
  5. 检查稳定性:将单次测试延长到约1至5分钟,观察吞吐曲线是否持续下降,以及是否出现重传或丢包。
  6. 复核瓶颈:结合ethtool统计、系统软中断、CPU单核负载和PCIe链路信息,判断问题位于网卡、主机还是网络设备。

如何解读结果而不被峰值误导

如果并发从1增加到8后吞吐明显上升,通常说明单连接或单队列曾限制测试结果;如果并发继续增加但吞吐趋于稳定,可能已经接近链路能力。若总吞吐不变、单个CPU核心达到高负载,则应优先检查RSS和中断亲和性。

双向测试尤其适合发现发送与接收路径不对称的问题。单向结果正常、双向明显下降,可能与CPU调度、交换机缓存、网卡发送队列或PCIe资源竞争有关。需要注意的是,物理机网络吞吐测试测到的是特定协议、帧大小和并发条件下的结果,并不等于所有应用都能获得同样带宽。

可靠结论的原则是:一次只改变一个参数,至少保留一组标准帧基线,并同时记录吞吐、CPU、丢包和重传。

常见问题

多队列越多越好吗?

不是。队列数量应与CPU核心、并发连接和链路速率匹配,过多可能增加中断与调度开销。

大帧测试结果能代表日常业务吗?

不能完全代表。大帧更适合评估连续传输效率,Web请求、文件碎片传输等场景仍应保留标准帧测试。

为什么测试工具显示带宽不高,但网卡没有报错?

可能是单连接、CPU单核、RSS分配、交换机端口或PCIe链路限制。应结合系统和网卡统计逐层排查。

测试应该做单向还是双向?

两者都应做。单向便于建立基线,双向更容易暴露发送和接收资源竞争。

总体来看,物理机网络吞吐测试应把多队列、大包参数、并发连接和系统监控结合起来。只有在统一环境下分阶段对照,测试结果才具有可比性,也更能指导网卡配置、主机调优和网络容量判断。