可见,iperf也可以完成基本的网络性能测试,但是工具比netperf要略差些,我们测试过程中,选用的工具为netperf,下面对netperf进行下详细介绍:

  安装:netperf的安装可以找SA部署,但是SA安装的版本时2.4版本,很多功能没有实现,可以自己make安装netperf 2.6版本,是目前为止新的版本。

  基本命令:netperf -H hostname -l testtime: 例如 netperf -H 172.0.0.2 -l 60,表示发送到172.0.0.2(这台机器上需要启动netserver进程),发送时间为60s,默认的发送方式为TCP Stream方式。

  发送方式:netperf 可以支持多种不同的发送方式,通过 -t 参数指定:

  TCP_STREAM、UDP_STREAM模式:即不停往发送方发送数据,可以通过-m 参数指定发送数据的大小,默认大小为socket size。

  TCP_RR模式:即Request、Response模式,类似模拟http请求、数据库请求等,默认大小Request size 和 Response size 均为1byte,可以通过 -r 64,32K 设置 Request、Response size。

  统计数据:默认得到的数据只有传输时间和吞吐量等,可以通过-k 参数设置要显示的结果数据:

  MIN_LATENCY,MAX_LATENCY,MEAN_LATENCY,P50_LATENCY,P90_LATENCY:可以得到延迟相关的统计数据,延迟大小值、平均延迟,延迟50、70、90、99值等。

  STDDEV_LATENCY:延迟标准差,可以通过该值反应网络的抖动情况

  THROUGHPUT:两台机器之间当前的吞吐量

  LOCAL_CPU_UTIL,REMOTE_CPU_UTIL:发送方和接收方的CPU使用率

  REQUEST_SIZE,RESPONSE_SIZE:RR模式时,Request、Response size

  LOCAL_TRANSPORT_RETRANS:重传次数

  通过上面对netperf命令的描述,可以看到该工具基本可以测试得到所有网络性能方面的指标,但是netperf、iperf这种工具可能更适合作为一种基准工具,进行压力测试,作为负载测试工具还不是很合适,测试过程中,可以通过-b -w的参数制定发送数据包个数和发送间隔,但是不能从根本上限制网络吞吐量仅占网络带宽的50%等情况。