netperf测试

netperf测试


Netperf 是一个网络性能测试工具,它可以测试网络协议栈的性能,例如TCP和UDP协议。Netperf可以测量网络吞吐量、延迟和CPU利用率等指标。它是一个开源工具,可在多种操作系统上运行,包括Linux、Windows和Mac OS X等。

Netperf支持多种常见的网络测试模式,包括TCP_STREAM、UDP_STREAM、TCP_MAERTS和UDP_RR等。用户可以使用Netperf来测试本地和远程网络的性能,以评估网络基础设施的性能和可靠性。

批量网络流量性能测试

根据使用传输协议的不同,批量数据传输又分为TCP批量传输和UDP批量传输。

服务端

服务端启动服务执行

eddy@eddy:~$ netserver
Unable to start netserver with  'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC

默认情况下 netserver 开启端口号为 12865,可以通过以下命令指定服务端口(如果服务端指定端口,则客户端也需要指定服务器端口)

eddy@eddy:~$ sudo netserver -D -p 4659

查看netperf帮助

eddy@eddy:~$ netperf -h

Usage: netperf [global options] -- [test options]

Global options:
    -a send,recv      Set the local send,recv buffer alignment
    -A send,recv      Set the remote send,recv buffer alignment
    -B brandstr       Specify a string to be emitted with brief output
    -c [cpu_rate]     Report local CPU usage
    -C [cpu_rate]     Report remote CPU usage
    -d                Increase debugging output
    -D time,[units] * Display interim results at least every time interval
                      using units as the initial guess for units per second
                      A negative value for time will make heavy use of the
                      system's timestamping functionality
    -f G|M|K|g|m|k    Set the output units
    -F lfill[,rfill]* Pre-fill buffers with data from specified file
    -h                Display this text
    -H name|ip,fam *  Specify the target machine and/or local ip and family
    -i max,min        Specify the max and min number of iterations (15,1)
    -I lvl[,intvl]    Specify confidence level (95 or 99) (99)
                      and confidence interval in percentage (10)
    -j                Keep additional timing statistics
    -l testlen        Specify test duration (>0 secs) (<0 bytes|trans)
    -L name|ip,fam *  Specify the local ip|name and address family
    -o send,recv      Set the local send,recv buffer offsets
    -O send,recv      Set the remote send,recv buffer offset
    -n numcpu         Set the number of processors for CPU util
    -N                Establish no control connection, do 'send' side only
    -p port,lport*    Specify netserver port number and/or local port
    -P 0|1            Don't/Do display test headers
    -r                Allow confidence to be hit on result only
    -s seconds        Wait seconds between test setup and test start
    -S                Set SO_KEEPALIVE on the data connection
    -t testname       Specify test to perform
    -T lcpu,rcpu      Request netperf/netserver be bound to local/remote cpu
    -v verbosity      Specify the verbosity level
    -W send,recv      Set the number of send,recv buffers
    -v level          Set the verbosity level (default 1, min 0)
    -V                Display the netperf version and exit
    -y local,remote   Set the socket priority
    -Y local,remote   Set the IP_TOS. Use hexadecimal.
    -Z passphrase     Set and pass to netserver a passphrase

For those options taking two parms, at least one must be specified;
specifying one value without a comma will set both parms to that
value, specifying a value with a leading comma will set just the second
parm, a value with a trailing comma will set just the first. To set
each parm to unique values, specify both and separate them with a
comma.

* For these options taking two parms, specifying one value with no comma
will only set the first parms and will leave the second at the default
value. To set the second value it must be preceded with a comma or be a
comma-separated pair. This is to retain previous netperf behaviour.

查看netserver帮助

eddy@eddy:~$ netserver -h

Usage: netserver [options]

Options:
    -h                Display this text
    -D                Do not daemonize
    -d                Increase debugging output
    -f                Do not spawn chilren for each test, run serially
    -L name,family    Use name to pick listen address and family for family
    -N                No debugging output, even if netperf asks
    -p portnum        Listen for connect requests on portnum.
    -4                Do IPv4
    -6                Do IPv6
    -v verbosity      Specify the verbosity level
    -V                Display version information and exit
    -Z passphrase     Expect passphrase as the first thing received

eddy@eddy:~$

TCP_STREAM测试

Netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM,用来测试进行TCP批量传输时的网络性能。

测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量。

服务端

 eddy@eddy:~$ sudo netserver -D -p 4659

客户端

eddy@eddy:~$ sudo netperf -t TCP_STREAM -H 192.168.159.131 -l 5 -p 4659
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.159.131 () port 0 AF_INET : demo
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec

131072  16384  16384    5.02      867.98
eddy@eddy:~$

UDP_STREAM测试

UDP_STREAM用来测试进行UDP批量传输时的网络性能。

测试UDP的网络性能时,测试分组的大小不得大于socket的发送与接收缓冲大小,否则netperf会报出错提示。

服务端

eddy@eddy:~$ sudo netserver -D -p 4659

客户端

eddy@eddy:~$ sudo netperf -t UDP_STREAM -H 192.168.159.131 -l 5 -p 4659
MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.159.131 () port 0 AF_INET : demo
Socket  Message  Elapsed      Messages
Size    Size     Time         Okay Errors   Throughput
bytes   bytes    secs            #      #   10^6bits/sec

212992   65507   5.00         3275      0     343.22
212992           5.00         3229            338.40

eddy@eddy:~$

测试请求/应答网络流量测试

TCP_RR

TCP_RR 方式的测试对象是多次 TCP request 和 response 的交易过程,但是它们发生在同一个 TCP 连接中,这种模式常常出现在数据库应用中。数据库的 client 程序与 server 程序建立一个 TCP 连接以后,就在这个连接中传送数据库的多次交易过程。

5秒内TCP_RR数据

eddy@eddy:~$ sudo netperf -t TCP_RR -H 192.168.159.131 -l 5
MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.159.131 () port 0 AF_INET : demo : first burst 0
Local /Remote
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate
bytes  Bytes  bytes    bytes   secs.    per sec

16384  131072 1        1       5.00     1669.24
16384  131072
eddy@eddy:~$

可使用-- -r <Request size>,<Resp size>更改请求和相应大小

TCP_CRR

5秒内TCP_CRR数据

eddy@eddy:~$ sudo netperf -t TCP_CRR -H 192.168.159.131 -l 5
MIGRATED TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.159.131 () port 0 AF_INET : demo
Local /Remote
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate
bytes  Bytes  bytes    bytes   secs.    per sec

16384  131072 1        1       5.00      458.35
16384  131072
eddy@eddy:~$

可使用-- -r <Request size>,<Resp size>更改请求和相应大小

UDP_RR

eddy@eddy:~$ sudo netperf -t UDP_RR -H 192.168.159.131 -l 5
MIGRATED UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.159.131 () port 0 AF_INET : demo : first burst 0
Local /Remote
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate
bytes  Bytes  bytes    bytes   secs.    per sec

212992 212992 1        1       5.00     1684.71
212992 212992
eddy@eddy:~$

可使用-- -r <Request size>,<Resp size>更改请求和相应大小

eddy@eddy:~$ sudo netperf -t UDP_RR -H 192.168.159.131 -l 5 -- -r 128,8192
MIGRATED UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.159.131 () port 0 AF_INET : demo : first burst 0
Local /Remote
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate
bytes  Bytes  bytes    bytes   secs.    per sec

212992 212992 128      8192    5.00     1690.62
212992 212992
eddy@eddy:~$

🛴
(#°Д°)
🛸


参考

第 4 章 Netperf 网络测试 (brinnatt.com)

【山外笔记-工具框架】Netperf网络性能测试工具详解教程-云社区-华为云 (huaweicloud.com)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux netperf 是一种常用的网络性能测试工具,用于评估计算机网络的吞吐量、延迟和数据传输效率等指标。它可以通过模拟网络应用程序的客户端和服务器端来进行测试。 在Linux系统中,我们可以使用以下步骤进行 netperf 测试: 1. 安装 netperf:使用包管理器(如apt-get、yum等)安装 netperf 客户端和服务器端软件包。 2. 设置测试环境:根据具体的测试需求,配置测试环境,包括网络拓扑、机器配置等。确保测试客户端和服务器可以正常通信。 3. 启动 netperf 服务器:在服务器上运行 netserver 命令,启动 netperf 服务器。 4. 运行 netperf 客户端:在客户端上运行 netperf 命令,指定服务器的 IP 地址和相关的测试参数。例如,可以使用 netperf -H <服务器IP> -t <测试类型> 来运行测试。 5. 分析测试结果:netperf 测试完成后,会生成测试报告,其中包含吞吐量、延迟、CPU利用率等指标的结果。根据具体需求,可以使用不同的选项和参数进行自定义测试,并对结果进行分析,以便于定位和解决网络性能问题。 总的来说,通过使用 Linux netperf 工具进行网络性能测试,我们可以了解网络的吞吐量和延迟等指标。这对于评估网络设备性能、优化网络配置以及排查网络问题都是非常有帮助的。同时,通过对测试结果的分析,我们还能够进一步优化网络性能,提升系统的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值