一、简介
qperf 可以用来测试两个节点之间的带宽(bandwidth)和延迟(latency),不仅仅可以用来测试 TCP/IP 协议的性能指标,还可以用来测试 RDMA 传输的指标。使用方法是:一个节点运行 qperf 作为服务端,另一个节点则运行 qperf 作为客户端,与服务端建立连接之后打流,获取带宽和延迟等数据。
二、安装
在 CentOS 发型版的 Linux 操作系统中安装比较简单,使用官方 yum 源,调用命令yum install qperf即可安装。
三、使用
- 服务端:
典型的用法不带任何参数,直接运行qperf命令即启动服务端进程,等待客户端的连接,默认监听端口为 19765。如果想指定监听端口可以增加参数--listen_port xxx,此时要保证客户端也要指定该端口号建立连接。
- 客户端:
客户端命令格式如下:
qperf SERVERNODE [OPTIONS] TESTS
其中,
- SERVERNODE为服务端的地址
- TESTS为需要测试的指标,使用帮助命令qperf --help tests可以查看到 qperf 支持的所有测量指标,可以一条命令中带多个测试项,这里介绍常用的有:
- tcp_bw—— TCP流带宽
- tcp_lat—— TCP流延迟
- udp_bw—— UDP流带宽
- udp_lat—— UDP流延迟
- conf—— 显示两端主机配置
- OPTIONS是可选字段,使用帮助命令qperf --help options可以查看所有支持的可选参数,这里介绍常用的参数:
- --time/-t—— 测试持续的时间,默认为 2s
- --msg_size/-m—— 设置报文的大小,默认测带宽是为 64KB,测延迟是为 1B
- --listen_port/-lp—— 设置与服务端建立连接的端口号,默认为 19765
- --verbose/-v—— 提供更多输出的信息,可以更多尝试一下-vc、-vs、-vt、-vu等等
四、示例
1、延迟测试
默认msg_size为1 byte,可通过-m参数指定message大小。-t 指定测试时长,单位为秒
qperf 127.0.0.1 -t 20 -m 64 -vvu tcp_lat udp_lat
2、带宽测试
qperf 127.0.0.1 -t 20 -m 64 -v tcp_bw udp_bw
3、遍历测试
测试数据包大小从1 到64K的tcp延时,按照2的倍数增长
qperf myserver -oo msg_size:1:64K:*2 -vu tcp_lat