netperf怎样进行网络基准测试

联启 网络工具 15

本文目录导读:

netperf怎样进行网络基准测试-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 环境准备
  2. 核心测试步骤
  3. 常见基准测试场景与参数
  4. 结果分析要点
  5. 调试技巧
  6. 总结命令速查

Netperf 是一个经典的网络性能测试工具,主要用于测量 TCP/UDP 的吞吐量、延迟和请求/响应(RR)性能。

由于 Netperf 是基于 C/S(客户端/服务器)架构的,测试前需要明确谁当做服务端,谁当做客户端。

以下是进行基准测试的标准步骤和常用命令:

环境准备

  1. 安装 Netperf

    • Ubuntu/Debian: sudo apt install netperf
    • CentOS/RHEL: sudo yum install netperf (可能需要先启用 EPEL 仓库)
    • 源码编译: 从官网下载,./configure && make && sudo make install
  2. 网络拓扑确认

    • 确定 Server(服务端)Client(客户端) 的 IP 地址。
    • 防火墙注意: 服务端需要开放端口(默认是 12865,可通过 -p 修改)。

核心测试步骤

启动服务端

在作为服务器的机器上运行 netserver

netserver
  • 默认监听所有 IP 的 12865 端口。
  • 可以指定端口或监听特定 IP: netserver -p 20000 -L 192.168.1.100

客户端运行测试

在客户端机器上使用 netperf 命令进行测试。

基本语法:

netperf -H <服务端IP> [其他参数]

常见基准测试场景与参数

TCP 吞吐量测试

测试网络的最大传输能力(千兆网卡是否达标、网络是否存在瓶颈)。

# 默认测试 TCP 流(STREAM)
netperf -H 192.168.1.100 -l 30
  • -l 30:测试持续 30 秒。
  • 结果解读:关注 Throughput(吞吐量)
    • 千兆局域网理想值约 940-980 Mbps。
    • 万兆局域网理想值约 9.4-9.8 Gbps。
    • 如果远低于预期,可能是网卡协商速度、网线质量、CPU 负载或驱动问题。

针对大包优化测试(基于 1460 字节 MTU):

netperf -H 192.168.1.100 -l 30 -m 65536 -t TCP_STREAM
  • -m 65536:设置发送缓冲区大小为 64KB。

TCP 请求/响应延迟测试(RR)

用于评估常见的 Web 请求、数据库查询或 RPC(远程过程调用)场景。

netperf -H 192.168.1.100 -l 30 -t TCP_RR
  • 结果解读:关注 Latency(延迟)Transaction Rate(事务速率)
    • Netperf 以 平均延迟(单位微秒或毫秒)和部分标准偏差的形式给出结果。
    • 吞吐量结果中的 Trans Rate 数值越高,意味着延迟越低。

小包交互测试(模拟高频数据包):

netperf -H 192.168.1.100 -l 30 -t TCP_RR -r 64,1024
  • -r 64,1024:请求 size 64 字节,响应 size 1024 字节,调整这两个数值可以模拟不同类型的应用交互。

UDP 吞吐量 & 丢包率测试

用于测试 VoIP(语音通话)、视频流或 DNS(域名解析)场景。

# UDP 默认测试(发送 64 字节包)
netperf -H 192.168.1.100 -l 30 -t UDP_STREAM

测试特定大小包的吞吐量 & 丢包:

netperf -H 192.168.1.100 -l 30 -t UDP_STREAM -m 1472
  • -m 1472:这是 UDP 在标准以太网(1500 MTU)下的最大单包数据量。
  • 结果解读:输出包含 Throughput(吞吐量) 和关键的 Loss(丢包率)

    如果丢包率大于 0,表明网络或应用层缓冲区存在容量不足或拥塞。

TCP 连接速率测试(CRR)

模拟短连接场景(HTTP/1.0、数据库短连接)。

netperf -H 192.168.1.100 -l 30 -t TCP_CRR
  • 结果解读:主要观察系统处理 新建 TCP 连接的能力(每秒连接数),数值较低通常说明 TCP 栈或内核参数(如 tcp_tw_reuse)需要调优。

结果分析要点

  1. 吞吐量瓶颈识别

    • CPU 利用率在客户端或服务端达到 100%,说明存在 CPU 瓶颈(此时可能需要调整中断亲和性或使用大页内存,具体取决于你的环境)。
    • CPU 空闲但吞吐量低,通常是 网络瓶颈(带宽不足、丢包)或 驱动/硬件问题(如网卡缓存、内存带宽不足)。
  2. 延迟抖动

    • 观察 Netperf 输出的 Stddev(标准偏差),如果该数值较大(例如超过 ±50微秒),说明网络存在抖动,可能影响实时应用。
  3. 双向测试

    • Netperf 默认只测单向,要测双向,可以:
      • 方法1:同时运行两个 netperf 实例(一个发,一个收)。
      • 方法2:使用高级测试类型(如 TCP_MAERTS 其实是为了测试接收端性能,并非标准双向;更推荐 -t TCP_RR 来模拟双向数据交换)。

调试技巧

  • 查看详细错误:在客户端或服务端加上 -v 2(详细程度参数)可以输出更详细的调试信息,帮助你定位问题。
  • 指定测试时间:基准测试建议运行 30-60 秒以上 (-l 60),以获得稳定结果,短时间的突发流量并不能反映网络的实际稳定带宽。
  • 并行测试:使用 -P 0 禁用并行控制输出,然后使用 -T-b 参数进行多连接测试,可以评估网络在高并发下的性能(但请注意避免被误判为攻击流量)。

总结命令速查

场景 命令
标准 TCP 吞吐量 netperf -H <IP> -l 30
大包 TCP 吞吐量 netperf -H <IP> -l 30 -t TCP_STREAM -m 65536
TCP 延迟 netperf -H <IP> -l 30 -t TCP_RR
UDP 吞吐量 netperf -H <IP> -l 30 -t UDP_STREAM -m 1472
TCP 连接速率 netperf -H <IP> -l 30 -t TCP_CRR

建议将测试结果记录下来,作为网络性能的 基线(Baseline),后续在调整网卡参数(如 gro, tso, 中断亲和性 irqbalance)或遇到性能问题时,可以通过与基线对比来快速判断性能波动的原因。

标签: netperf 基准测试

抱歉,评论功能暂时关闭!