网络基准测试小结(二)

阿凡达2018-08-23 14:59

上一篇文章对linux操作系统使用的网络测试工具进行了总结。windows操作系统由于其特殊性,测试过程与linux有很大区别,这里将对windows操作系统的网络测试单独进行总结。

netperf和iperf作为比较流行的网络测试工具,同时之前的测试中也积累了比较多的经验,因此针对windows操作系统第一时间想到的是使用windows版的netperf和iperf。windows版netper和iperf的下载地址:http://pan.baidu.com/s/1dFnf8GT

  • windows版iperf
对于windows版的iperf,直接 将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可。(%systemroot%=C:/WINDOWS)
iperf的使用非常简单,在cmd中输入iperf即可(如果安装的是iperf3,则需输入iperf3):
在测pps时,通常我们将云主机的mtu设置为100bytes字节。在windows下,mtu的更改方式与linux有所不同。linux环境下查看mtu的命令为:
netsh interface ipv4 show subinterfaces
更改mtu大小命令:
netsh interface ipv4 set subinterface "本地连接 2" mtu=1500 store=persistent

  • windows版netperf
windows版的netperf解压后即可使用。初次使用时可能会遇到如下问题:
C:\>netserver.exe  
netserver: fopen of debug file as new stdout failed!: The system cannot find the path specified. 
解决方法很简单,在C盘的根目录下新建tmp文件夹即可。原因可以从源代码获得:
Source: netserver.c  
  
#ifndef DEBUG_LOG_FILE  
#ifndef WIN32  
#define DEBUG_LOG_FILE "/tmp/netperf.debug"  
#else  
#define DEBUG_LOG_FILE "c:\\temp\\netperf.debug"  
#endif /* WIN32 */  
#endif /* DEBUG_LOG_FILE */ 

  • windows版netperf和iperf存在的问题
网盘上的netperf版本为2.4.5,windows版netperf2.4.5是不支持-O参数的,因此也没有办法测延迟时间。(只能通过tcp_rr模式测得吞吐量,然后通过公式计算获得)
同时在使用iperf进行测试时,发现同一时间段测试结果波动非常大:
C:\sriov\NetPerf-2.4.5-w32>iperf3 -c 13.20.1.163
Connecting to host 13.20.1.163, port 5201
[  4] local 13.20.1.157 port 49217 connected to 13.20.1.163 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.02   sec   216 MBytes  1.78 Gbits/sec
[  4]   1.02-2.00   sec   228 MBytes  1.95 Gbits/sec
[  4]   2.00-3.00   sec   216 MBytes  1.81 Gbits/sec
[  4]   3.00-4.00   sec   198 MBytes  1.66 Gbits/sec
[  4]   4.00-5.00   sec   246 MBytes  2.07 Gbits/sec
[  4]   5.00-6.00   sec   275 MBytes  2.31 Gbits/sec
[  4]   6.00-7.00   sec   254 MBytes  2.13 Gbits/sec
[  4]   7.00-8.02   sec   241 MBytes  1.99 Gbits/sec
[  4]   8.02-9.02   sec   251 MBytes  2.10 Gbits/sec
[  4]   9.02-10.00  sec   218 MBytes  1.86 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  2.29 GBytes  1.97 Gbits/sec                  sender
[  4]   0.00-10.00  sec  2.29 GBytes  1.97 Gbits/sec                  receiver

iperf Done.

C:\sriov\NetPerf-2.4.5-w32>iperf3 -c 13.20.1.163
Connecting to host 13.20.1.163, port 5201
[  4] local 13.20.1.157 port 49219 connected to 13.20.1.163 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   190 MBytes  1.59 Gbits/sec
[  4]   1.00-2.00   sec   155 MBytes  1.30 Gbits/sec
[  4]   2.00-3.00   sec   167 MBytes  1.40 Gbits/sec
[  4]   3.00-4.00   sec   146 MBytes  1.23 Gbits/sec
[  4]   4.00-5.00   sec   152 MBytes  1.28 Gbits/sec
[  4]   5.00-6.00   sec   160 MBytes  1.34 Gbits/sec
[  4]   6.00-7.00   sec   174 MBytes  1.46 Gbits/sec
[  4]   7.00-8.00   sec   147 MBytes  1.23 Gbits/sec
[  4]   8.00-9.00   sec   167 MBytes  1.40 Gbits/sec
[  4]   9.00-10.00  sec   158 MBytes  1.33 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  1.58 GBytes  1.36 Gbits/sec                  sender
[  4]   0.00-10.00  sec  1.58 GBytes  1.36 Gbits/sec                  receiver

iperf Done.

C:\sriov\NetPerf-2.4.5-w32>iperf3 -c 13.20.1.163
Connecting to host 13.20.1.163, port 5201
[  4] local 13.20.1.157 port 49227 connected to 13.20.1.163 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   335 MBytes  2.81 Gbits/sec
[  4]   1.00-2.00   sec   349 MBytes  2.93 Gbits/sec
[  4]   2.00-3.00   sec   366 MBytes  3.07 Gbits/sec
[  4]   3.00-4.00   sec   358 MBytes  3.01 Gbits/sec
[  4]   4.00-5.00   sec   383 MBytes  3.20 Gbits/sec
[  4]   5.00-6.00   sec   337 MBytes  2.84 Gbits/sec
[  4]   6.00-7.00   sec   347 MBytes  2.91 Gbits/sec
[  4]   7.00-8.00   sec   371 MBytes  3.11 Gbits/sec
[  4]   8.00-9.00   sec   387 MBytes  3.24 Gbits/sec
[  4]   9.00-10.00  sec   338 MBytes  2.83 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  3.49 GBytes  3.00 Gbits/sec                  sender
[  4]   0.00-10.00  sec  3.49 GBytes  3.00 Gbits/sec                  receiver

iperf Done.
上面三组数据为连续进行三次测试,每次测试时间10s中的iperf测试结果。从中可以发现,三个带宽差别非常大,最大带宽可以测到3Gbits/s,但是最小的却只有1.36Gbits/s。netperf测试结果存在同样的问题。

  • Ntttcp简介
Ntttcp是windows下的另一款网络测试工具,能够测量网络的吞吐量、pps等性能指标。测试结果与netperf相比,测试结果非常稳定。下面是Ntttcp的pps测试结果(mtu=100bytes):
C:\sriov\NTttcp-v5.33\x86fre>NTttcp.exe -s -a 16 -t 15 -cd 5 -wu 5 -m 1,*,13.20.
1.163
Copyright Version 5.33
Network activity progressing...


Thread  Time(s) Throughput(KB/s) Avg B / Compl
======  ======= ================ =============
     0   15.016       379823.122     65536.000


#####  Totals:  #####


   Bytes(MEG)    realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
     5569.750000      15.015       1459.909          370.946


Throughput(Buffers/s) Cycles/Byte       Buffers
===================== =========== =============
             5935.132       1.421     89116.000


DPCs(count/s) Pkts(num/DPC)   Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
     6078.788        10.377       11509.957          5.480


Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
     4000458           947108        1046      0      6.010
其中,Throughput为吞吐量,Packets Sent为发包数,除以测试时间即为包转发量。
    
  • Ntttcp使用方法
下载完成后进行解压,然后分别在client端和server端运行相应命令即可。
假设server端的ip地址为13.20.1.44,则server端运行命令为:
ntttcp -r -a 16 -t 60 -cd 5 -wu 5 -v -xml c:\test.xml -m 32,*,13.20.1.44
client端命令为:
ntttcp -s -a 16 -t 60 -cd 5 -wu 5 -m 32,*,13.20.1.44
参数含义:
    -r:表示接收端
    -s:表示发送端
    -a:数据发送/接收buffer数量,默认是2
    -t:测试时间,单位是秒
    -wu:warm-up period,即云主机运行-wu时间后才开始进行测试。默认为测试时间/2.
    -cd:cool-down period,即测试结束后经过-cd时间后才停止
    -v:测试结果显示所有信息
    -xml:以xml格式输出测试结果
    -m:并发线程数

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

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