iperf 的结果每次不一样,并不自动等于网卡不稳定。它反映的是某一时刻、某一对主机、某组参数和某条链路共同作用后的结果。想把“波动”变成可定位的问题,先把测试条件写清楚,再比较结果。
测速时最容易被忽略的是比较基础。第一次是单向 TCP,第二次改成双向;第一次只跑很短时间,第二次增加了并发;两端后台负载也不一致——这些结果即使数值不同,也不能直接推导出网卡、模块或交换机出现故障。
iperf3 的官方说明把测试时长、并发流数和方向都作为客户端参数。其中 -P 用来设置并发客户端流数;官方 FAQ 也说明,较新的 iperf3 版本会为每个测试流使用独立线程,多流可能在主机 CPU 成为限制时带来不同结果。查看 iperf3 参数说明 和 官方 FAQ。这不是“多线程一定更快”的承诺,而是提醒测试记录不能遗漏版本与并发条件。
只有测试协议、方向、时长、并发数、显示单位和两端环境保持一致,重复结果才有可比性。单次截图适合发现线索,不适合直接给硬件下结论。
一轮记录不必复杂,但要让其他人能够在相近条件下复跑。建议从发送端和接收端同时记录:iperf 版本、命令参数、测试方向、协议、时长、并发数和显示单位;再补上两台主机的端口实际速率、CPU 负载、PCIe 链路状态以及测试期间是否有存储或业务负载。
这样做的目的不是追求一条“标准命令”,而是避免把已经改变的变量藏在命令行之外。例如,改了并发数后结果变化,首先只能说明该条件下的总吞吐发生了变化;是否由 CPU、协议栈、对端主机或链路资源造成,还要继续看同一轮记录中的其他字段。
正向、反向和双向测试的主机收发角色不同。比较多轮结果时,把方向和端点身份写进记录,能减少“同样命令、其实不是同一负载方向”的误判。
如果端口实际速率本身没有达到预期,应先回到端口协商、介质、对端端口和交换策略核对;如果端口状态稳定而结果变化,再把注意力放到主机资源和测试条件。CPU 忙、PCIe 资源分配、MTU、系统缓冲区、后台存储读写与并发流数,都会改变一次吞吐测试所处的环境。
LR-LINK 知识库中有两份内部归档的 FAQ,分别记录了特定测试环境下如何查看显示单位、两端配置、PCIe 总线、缓冲区、MTU 和线程数。这些内容适合用作排查清单,不应被理解成所有服务器都适用的固定阈值或性能承诺。现场判断仍应以可复现的端口状态、系统状态和多轮记录为准。
| 观察到的现象 | 先核对什么 | 暂时不要得出的结论 |
|---|---|---|
| 每轮结果不同 | 参数、时长、方向、并发和显示单位是否一致 | “网卡本身有问题” |
| 单流与多流差异明显 | iperf 版本、CPU 负载、流数与进程资源 | “链路带宽只有单流结果” |
| 空闲时稳定、业务时波动 | 存储读写、CPU、虚拟化或其他业务负载 | “模块或线缆一定损坏” |
| 端口速率异常 | 两端端口、介质、交换机策略与告警 | “只调测试命令就能解决” |
先选一组基础条件,连续跑多轮并完整保存记录;随后一次只改变一个变量,例如方向、并发数或业务负载。这样能分辨出是每轮都持续偏离,还是只在某种条件组合下出现变化。若一次同时换了模块、插槽、命令和交换机策略,即使结果改善,也很难知道哪一项真正影响了结果。
提交给技术支持时,建议至少提供两端系统和网卡驱动版本、端口实际速率、PCIe 链路状态、iperf 版本与完整命令、测试方向、时长、并发数、MTU、CPU/存储负载,以及多轮原始结果。记录比一句“测速不稳定”更容易让问题进入下一步排查。
服务器网卡 iperf 测速波动时,先固定测试参数与两端环境,再比较多轮记录。官方文档说明了并发、时长和方向等工具变量;内部归档经验只能帮助建立核对清单,不能替代具体现场的链路与主机状态判断。
不能直接这样判断。并发数改变了测试负载,也可能改变 CPU 和协议栈的使用方式。应同时记录 iperf 版本、CPU 状态、方向和端口条件,再比较同类测试。
不能。端口速率只说明链路协商状态,主机 CPU、PCIe 链路、存储或虚拟化负载仍可能影响实际传输结果。
没有脱离环境的统一数字。应先固定条件、连续记录多轮,并结合是否有丢包、端口告警、CPU 或其他业务负载来判断。内部 FAQ 中的特定环境经验不应直接套用于所有设备。
截图可以作为辅助,但更有价值的是完整命令、iperf 版本、端口状态、两端系统信息和多轮原始结果。这样才便于复现和比较。