qperf如何测量网络延迟和带宽

联启 网络工具 13

本文目录导读:

qperf如何测量网络延迟和带宽-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 环境准备
  2. 启动服务器端
  3. 测量网络延迟
  4. 测量网络带宽(吞吐量)
  5. 进阶参数(组合测试与调优)
  6. 解读结果时的关键点
  7. 总结命令备忘录

qperf 是一个灵活的网络性能测量工具,可以很方便地测量单线程多线程情况下的延迟(Latency)吞吐量(Bandwidth/Throughput)

它的核心原理是:需要在一台机器上启动服务器端(监听),在另一台机器启动客户端(发起测试)。

以下是使用 qperf 测量延迟和带宽的标准方法:

环境准备

  • 安装:在客户端和服务器端都需要安装 qperf
    • Red Hat/CentOS/Fedorasudo yum install qperfsudo dnf install qperf
    • Debian/Ubuntusudo apt install qperf
  • 防火墙:确保服务器端的防火墙允许 qperf 的默认端口 19765 (TCP)。

启动服务器端

在作为测试目标的机器上运行(通常只需运行一次,保持后台运行):

# 在服务器端执行
qperf --listen
# 或指定端口(如果默认端口被占用)
qperf --listen_port 12345

服务器会进入等待状态,直到客户端发起请求。

测量网络延迟

延迟测试通常使用 TCP 协议,模拟请求-响应往返时间(RTT)。

基本命令格式:在客户端执行 qperf <服务器IP> <测试类型>

测试单次 TCP 延迟

# 在客户端执行
qperf 192.168.1.100 tcp_lat
  • 输出示例
    tcp_lat:
        latency  =  45.2 us  (微秒)  ← 这就是单次往返时间
    • us 是微秒,通常数据中心内网是 100-500 us,跨机房是 1ms-10ms。

测试单次 UDP 延迟

qperf 192.168.1.100 udp_lat

注意qperf 默认测量的是 单次请求-响应 的延迟,而不是 ping 的 ICMP 延迟,这能更真实反映应用程序(如数据库、RPC服务)的延迟。

测量网络带宽(吞吐量)

带宽测试通常使用 TCP 流来测试最大吞吐量。

测试 TCP 带宽

# 在客户端执行
qperf 192.168.1.100 tcp_bw
  • 输出示例
    tcp_bw:
        bw   =  1.12 GB/sec  ← 这里显示的是字节/秒 (GigaBytes per second)
    • 如果显示 GB/sec,是字节速率。1 GB/sec 约等于 8 Gbps(网络常用单位)。
    • 如果显示 Gb/sec,则是比特速率,注意看单位。

测试 UDP 带宽

qperf 192.168.1.100 udp_bw

UDP测试可以设置流量整形,如 -m 指定报文大小,-u 指定速率限制。

进阶参数(组合测试与调优)

qperf 的强大之处在于可以同时测试多种指标,或指定参数。

同时测试延迟和带宽

qperf 192.168.1.100 tcp_lat tcp_bw

会依次执行延迟测试和带宽测试,并给出两个结果。

指定测试时长

默认可能只测几秒,可以增加时长以获得更稳定结果:

qperf 192.168.1.100 -t 30 tcp_bw  # 测试30秒

指定消息大小 (影响带宽/延迟)

默认消息大小较小(延迟测试通常64字节,带宽测试通常几百KB),可以手动指定:

# 用64字节的小包测延迟(模拟小请求)
qperf 192.168.1.100 -m 64 tcp_lat
# 用1M字节的大包测带宽(模拟大文件传输)
qperf 192.168.1.100 -m 1M tcp_bw

使用多连接 (模拟并发)

这在测量高并发场景下的带宽或延迟时很有用。

# 使用4个TCP连接并发送测试带宽
qperf 192.168.1.100 -t 30 -n 4 tcp_bw

调整TCP缓冲大小 (测试极限带宽)

如果默认测试结果偏低,可能是因为TCP收发缓冲区太小:

# 设置发送/接收缓冲区为 256KB
qperf 192.168.1.100 --tcp_buf_size 256K tcp_bw

解读结果时的关键点

  1. 单位陷阱

    • 带宽结果中 GB/sec字节(Gigabytes),而网络设备的带宽通常用 Gbps(Gigabits)表示,换算:1 GB/sec = 8 Gbps
    • 延迟结果中 us 是微秒(百万分之一秒),ms 是毫秒(千分之一秒),1 ms = 1000 us。
  2. 链路层的影响

    • 如果两端网卡都是 10Gbps,但实测只有 12 GB/sec(即约 9 Gbps),这已经是很好的结果,协议开销会导致大约 5-10% 的损耗。
    • 如果实测远低于理论值(例如只有 200 MB/sec),可能是 CPU瓶颈PCIe总线限制网卡驱动问题中间交换机/防火墙限速
  3. 从结果反推

    • 延迟高 且 带宽低:通常是链路拥塞、网络设备处理慢或往返距离远(物理距离+跳数多)。
    • 延迟低 但 带宽低:可能是单线程瓶颈、TCP窗口太小、CPU单核性能不足(qperf默认单线程)或隔板/线缆接触不良。

总结命令备忘录

测试目标 客户端命令示例 (假设服务器IP为 192.168.1.100)
默认 TCP 延迟 qperf 192.168.1.100 tcp_lat
默认 TCP 带宽 qperf 192.168.1.100 tcp_bw
同时测试 qperf 192.168.1.100 tcp_lat tcp_bw
指定消息大小 qperf 192.168.1.100 -m 64 tcp_lat
多线程测带宽 qperf 192.168.1.100 -n 4 tcp_bw
长时间测试 qperf 192.168.1.100 -t 60 tcp_bw
指定缓冲区大小 qperf 192.168.1.100 --tcp_buf_size 512K tcp_bw

最后提醒:执行前要确保服务器端启动的 qperf 进程与客户端版本匹配,并在测试大带宽时注意 CPU 占用率,避免客户端或服务器 CPU 成为瓶颈导致结果不准。

标签: 网络性能指标

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