netperf使用

猪小花1号2018-08-23 14:19


netperf介绍
netperf是一个基于client-server模式的网络测试工具,可以测量TCP和UDP传输的吞吐量、时延、CPU占用率等性能参数。它可以测试以下几种模式的TCP核UDP网络性能:
  • TCP_STREAM:client端向server端发送批量TCP数据
  • UDP_STREAM:client端向server端发送批量UDP数据
  • TCP_RR和TCP_CRR:前者是在同一个连接中进行多次request和response请求,后者是每次请求新建一个连接(HTTP)
  • UDP_RR:使用UDP进行request和response请求

安装
通常情况下netperf安装有两种方法:
  • 通过apt直接安装
apt-get install netperf
  • 通过安装包进行安装,下载地址:http://download.csdn.net/download/changzhi1990/6912125
安装方法:
tzr zxvf netperf-2.6.0.tar.gz
cd netperf-2.6.0
./configure
make
make install
安装完成后,可通过如下命令查看是否安装成功:
netperf -V

常用参数
netperf在使用时需要设置不同参数模拟不同场景。
常用参数如下:
  -t:设置netperf工作模式,包括TCP_STREAM、UDP_STREAM、TCP_CRR、TCP_RR、UDP_RR
  -H:netserver的IP地址
  -p:指定netserver的端口号
  -l:设置测试时间
除此之外,还有一些备选参数可根据实际需求进行选择。备选参数前面有个前缀“--”:
  -m:批量传输时设置传输数据包大小
  -r:请求应答模式测试时发送数据包大小和接收数据包大小
  -O:自定义输出结果,可在其中添加时延、90值、99值、吞吐量、CPU使用率等信息

使用方法
server端
server端通过以下命令启动即可:
netserver
client端
  • 测试TCP_STREAM:
netperf -t TCP_STREAM -H $netserver_ip -p $PORT -l $testtime -- -m $datagram_size
  • 测试TCP_RR:
netperf -t TCP_RR -H $netserver_ip -l $testtime -p $PORT -- -r $req_size,$rsp_size
  • 测试UDP_STREAM:
netperf -t UDP_STREAM -H $netserver_ip -l $testtime -- -m $datagram_size
  • 测试TCP_CRR:
netperf -t TCP_RR -H netserveripltesttime -p PORTrreq_size,$rsp_size
默认的输出结果中,只有吞吐量一个性能指标,如果需要得到网络的时延等信息,可通过‘-O’等参数个性化定制:
netperf -t UDP_STREAM -H $netserver_ip -l $testtime -- -m $datagram_size -O "MIN_LAETENCY,MAX_LATENCY,MEAN_LATENCY,P90_LATENCY,P99_LATENCY,THROUGHPUT,THROUGHPUT_UNITS"

常见问题
以下几个问题是在netperf使用时遇到较多的几个问题:
  • netserver启动报错
如果netserver启动时端口被占用,则会报以下错误:
Unable to start netserver with  'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
解决方法:
指定一个未使用的端口给netserver,如:
netserver -p 49999
  • 不同子网下的主机使用netperf时连接超时
解决方法:netperf在设计时关闭了此功能,需要通过额外参数进行打开‘-R 1’,如:
netperf -t TCP_STREAM -H $netserver_ip -P $PORT -l $testtime -- -R 1 -m $datagram_size
以上既是netperf在使用时的一些个人总结,由于能力有限,难免存在不足。


网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者季涛授权发布。