Linux netperf网络性能测试
网络性能测量的五项指标
1. 可用性(availability)
测试网络性能的第一步是确定网络是否正常工作,最简单的方法是使用 ping 命令。通过向远端的机器发送 icmp echo request,并等待接收 icmp echo reply 来判断远端的机器是否连通,网络是否正常工作。
Ping 命令有非常丰富的命令选项,比如 -c 可以指定发送 echo request 的个数,-s 可以指定每次发送的 ping 包大小。
网络设备内部一般有多个缓冲池,不同的缓冲池使用不同的缓冲区大小,分别用来处理不同大小的分组(packet)。例如交换机中通常具 有三种类型的包缓冲:一类针对小的分组,一类针对中等大小的分组,还有一类针对大的分组。为了测试这样的网络设备,测试工具必须要具有发送不同大小分组的 能力。Ping 命令的 -s 就可以使用在这种场合。
2. 响应时间(response time)
Ping 命令的 echo request/reply 一次往返所花费时间就是响应时间。有很多因素会影响到响应时间,如网段的负荷,网络主机的负荷,广播风暴,工作不正常的网络设备等等。
在网络工作正常时,记录下正常的响应时间。当用户抱怨网络的反应时间慢时,就可以将现在的响应时间与正常的响应时间对比,如果两者差值的波动很大,就能说明网络设备存在故障。
3. 网络利用率(network utilization)
网络利用率是指网络被使用的时间占总时间(即被使用的时间+空闲的时间)的比例。比如,Ethernet 虽然是共享的,但同时却只能有一个报文在传输。因此在任一时刻,Ethernet 或者是 100% 的利用率,或者是 0% 的利用率。
计算一个网段的网络利用率相对比较容易,但是确定一个网络的利用率就比较复杂。因此,网络测试工具一般使用网络吞吐量和网络带宽容量来确定网络中两个节点之间的性能。
4. 网络吞吐量(network throughput)
网络吞吐量是指在某个时刻,在网络中的两个节点之间,提供给网络应用的剩余带宽。
网络吞吐量可以帮助寻找网络路径中的瓶颈。比如,即使 client 和 server 都被分别连接到各自的 1000M Ethernet 上,但是如果这两个 1000M 的Ethernet 被 100M 的 Ethernet 连接起来,那么 100M 的 Ethernet 就是网络的瓶颈。
网络吞吐量非常依赖于当前的网络负载情况。因此,为了得到正确的网络吞吐量,最好在不同时间(一天中的不同时刻,或者一周中不同的天)分别进行测试,只有这样才能得到对网络吞吐量的全面认识。
有些网络应用程序在开发过程的测试中能够正常运行,但是到实际的网络环境中却无法正常工作(由于没有足够的网络吞吐量)。这是因为测试只是在空闲的网络环境中,没有考虑到实际的网络环境中还存在着其它的各种网络流量。所以,网络吞吐量定义为剩余带宽是有实际意义的。
5. 网络带宽容量(network bandwidth capacity)
与网络吞吐量不同,网络带宽容量指的是在网络的两个节点之间的最大可用带宽。这是由组成网络的设备的能力所决定的。
测试网络带宽容量有两个困难之处:在网络存在其它网络流量的时候,如何得知网络的最大可用带宽;在测试过程中,如何对现有的网络流量不造成影响。网络测试工具一般采用 packet pairs 和 packet trains 技术来克服这样的困难。
收集网络性能数据的方式
当确定了网络性能的测试指标以后,就需要使用网络测试工具收集相应的性能数据,分别有三种从网络获取数据的方式:
1. 通过snmp协议直接到网络设备中获取,如net-snmp工具
2. 侦听相关的网络性能数据,典型的工具是tcpdump
3. 自行产生相应的测试数据,如本文中使用的netperf工具
Netperf概况
Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量 数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统 发送数据,以及另外一个系统能够以多块的速度接收数据。
Netperf工具以client/server方式工作。server端是 netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与 server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与 server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。
TCP网络性能
由于TCP协议能够提供端到端的可靠传输,因此被大量的网络应用程序使用。但是,可靠性的建立是要付出代价的。TCP协议保证可靠性的措施,如建立并维护连接、控制数据有序的传递等都会消耗一定的网络带宽。 Netperf可以模拟三种不同的TCP流量模式:
1) 单个TCP连接,批量(bulk)传输大量数据
2) 单个TCP连接,client请求/server应答的交易(transaction)方式
3) 多个TCP连接,每个连接中一对请求/应答的交易方式
UDP网络性能
UDP没有建立连接的负担,但是UDP不能保证传输的可靠性,所以使用UDP的应用程序需要自行跟踪每个发出的分组,并重发丢失的分组。
Netperf可以模拟两种UDP的流量模式:
1) 从client到server的单向批量传输
2) 请求/应答的交易方式
由于UDP传输的不可靠性,在使用netperf时要确保发送的缓冲区大小不大于接收缓冲区大小,否则数据会丢失,netperf将给出错误的结果。因此,对于接收到分组的统计不一定准确,需要结合发送分组的统计综合得出结论。
Netperf的命令行参数
在unix系统中,可以直接运行可执行程序来启动netserver,也可以让inetd或xinetd来自动启动netserver。 当netserver在server端启动以后,就可以在client端运行netperf来 测试网络的性能。netperf通过命令行参数来控制测试的类型和具体的测试选项。
根据作用范围的不同,netperf的命令行参数可以分为两大类:全局 命令行参数、测试相关的局部参数,两者之间使用--分隔:
netperf [global options]-- [test-specific options] |
这里我们只解释那些常用的命令行参数,其它的参数读者可以查询netperf的man手册。
-H host :指定远端运行netserver的server IP地址。
-l testlen:指定测试的时间长度(秒)
-t testname:指定进行的测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR,在下文中分别对它们说明。
在后面的测试中,netserver运行在192.168.39.252,server与client通过局域网连接(1000M Hub)。
Netperf测试网络性能
测试批量(bulk)网络流量的性能
批量数据传输典型的例子有ftp和其它类似的网络应用(即一次传输整个文件)。
根据使用传输协议的不同,批量数据传输又分为TCP批量传输和UDP批量传输。
1. TCP_STREAM Netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM。测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量:
#netperf -H 192.168.39.252 -l 30 TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 32768 32768 30.02 913.93 |
从netperf的结果输出中,我们可以知道以下的一些信息:
1) 远端系统(即server)使用大小为87380字节的socket接收缓冲
2) 本地系统(即client)使用大小为32768字节的socket发送缓冲
3) 向远端系统发送的测试分组大小为32768字节
4) 测试经历的时间为30.02秒
5) 吞吐量的测试结果为913.93Mbits/秒
在缺省情况下,netperf向发送的测试分组大小设置为本地系统所使用的socket发送缓冲大小。
TCP_STREAM方式下与测试相关的局部参数如下表所示:
参数 | 说明 |
-s size | 设置本地系统的socket发送与接收缓冲大小 |
-S size | 设置远端系统的socket发送与接收缓冲大小 |
-m size | 设置本地系统发送测试分组的大小 |
-M size | 设置远端系统接收测试分组的大小 |
-D | 对本地与远端系统的socket设置TCP_NODELAY选项 |
通过修改以上的参数,并观察结果的变化,我们可以确定是什么因素影响了连接的吞吐量。
例如,如果怀疑路由器由于缺乏足够的缓冲区空间,使得转发大的分组时存在问题,就可以增加测试分组(-m)的大小,以观察吞吐量的变化:
# netperf -H 192.168.39.252 -l 30 -- -m 2048 TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 32768 2048 30.02 908.96 |
在这里,测试分组的大小减少到2048字节,而吞吐量却没有很大的变化(与前面例子中测试分组大小为字节相比)。相反,如果吞吐量有了较大的提升,则说明在网络中间的路由器确实存在缓冲区的问题。
2. UDP_STREAM UDP_STREAM用来测试进行UDP批量传输时的网络性能。
需要特别注意的是,此时测试分组的大小不得大于socket的发送与接收缓冲大小,否则netperf会报出错提示:
#netperf -t UDP_STREAM -H 192.168.39.252 -l 30 UDP UNIDIRECTIONAL SEND TEST to 192.168.39.252 udp_send: data send error: Message too long |
为了避免这样的情况,可以通过命令行参数限定测试分组的大小,或者增加socket的发送/接收缓冲大小。UDP_STREAM方式使用与TCP_STREAM方式相同的局部命令行参数,因此,这里可以使用-m来修改测试中使用分组的大小:
#netperf -t UDP_STREAM -H 192.168.0.28 -- -m 1024 UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : demo Socket Message Elapsed Messages Size Size Time Okay Errors Throughput bytes bytes secs # # 10^6bits/sec 9216 1024 10.00 1151583 5862594 943.34 229376 10.00 1126237 922.58 |
UDP_STREAM方式的结果中有两行测试数据,
第一行显示的是本地系统的发送统计,这里的吞吐量表示netperf向本地socket发送分组的能力。但是,我们知道,UDP是不可靠的传输协议,发送出去的分组数量不一定等于接收到的分组数量。
第二行显示的就是远端系统接收的情况,由于client与server直接连接在一起,而且网 络中没有其它的流量,所以本地系统发送过去的分组几乎都被远端系统正确的接收了,远端系统的吞吐量也几乎等于本地系统的发送吞吐量。但是,在实际环境中, 一般远端系统的socket缓冲大小不同于本地系统的socket缓冲区大小,而且由于UDP协议的不可靠性,远端系统的接收吞吐量要远远小于发送出去的 吞吐量。
测试请求/应答(request/response)网络流量的性能
另一类常见的网络流量类型是应用在client/server结构中的request/response模式。在每次交易(transaction)中,client向server发出小的查询分组,server接收到请求,经处理后返回大的结果数据。 如下图所示:
1. TCP_RR
TCP_RR方式的测试对象是多次TCP request和response的交易过程,但是它们发生在同一个TCP连接中,这种模式常常出现在数据库应用中。数据库的client程序与 server程序建立一个TCP连接以后,就在这个连接中传送数据库的多次交易过程。
#netperf -t TCP_RR -H 192.168.39.252 TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : 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 32768 65536 1 1 10.00 10781.21 16384 87380 |
Netperf输出的结果也是由两行组成。
第一行显示本地 系统的情况,第二行显示的是远端系统的信息。平均的交易率(transaction rate)为10781.21次/秒。注意到这里每次交易中的request和response分组的大小都为1个字节,不具有很大的实际意义。用户可以通 过测试相关的参数来改变request和response分组的大小,TCP_RR方式下的参数如下表所示:
参数 | 说明 |
-r req,resp | 设置request和reponse分组的大小 |
-s size | 设置本地系统的socket发送与接收缓冲大小 |
-S size | 设置远端系统的socket发送与接收缓冲大小 |
-D | 对本地与远端系统的socket设置TCP_NODELAY选项 |
通过使用-r参数,我们可以进行更有实际意义的测试:
# netperf -t TCP_RR -H 192.168.39.252 -- -r 32,1024 TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : 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 32768 65536 32 1024 10.00 7077.04 16384 87380 |
从结果中可以看出,由于request/reponse分组的大小增加了,导致了交易率明显的下降。
注:相对于实际的系统,这里交易率的计算没有充分考虑到交易过程中的应用程序处理时延,因此结果往往会高于实际情况。
2. TCP_CRR
与TCP_RR不同,TCP_CRR为每次交易建立一个新的TCP连接。
最典型的应用就是HTTP,每次HTTP交易是在一条单独的TCP连接中进行的。
因此,由于需要不停地建立新的TCP连接,并且在交易结束后拆除TCP连接,交易率一定会受到很大的影响。
# netperf -t TCP_CRR -H 192.168.39.252 TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : demo Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec 32768 65536 1 1 10.00 22.20 16384 87380 |
即使是使用一个字节的request/response分组,交易率也明显的降低了,只有22.20 次/秒。
TCP_CRR使用与TCP_RR相同的局部参数。
3. UDP_RR
UDP_RR方式使用UDP分组进行request/response的交易过程。
由于没有TCP连接所带来的负担,所以我们推测交易率一定会有相应的提升。
# netperf -t UDP_RR -H 192.168.39.252 UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.39.252 () port 0 AF_INET : histogram : interval : dirty data : 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 9216 42080 1 1 10.00 10992.05 229376 229376 |
结果证实了我们的推测,交易率为10992.05 次/秒,高过TCP_RR的数值。
不过,如果出现了相反的结果,即交易率反而降低了,也不需要担心,因为这说明了在网络中,路由器或其它的网络设备对UDP采用了与TCP不同的缓冲区空间和处理技术。
测试总结:
除了netperf以外,还有很多其它的网络性能测试工具,如dbs, iperf, pathrate, nettest, netlogger, tcptrace, ntop等。这些工具有其各自的特色和不同的侧重点,我们可以根据具体的应用环境,有选择的使用它们,这样就可以使这些工具发挥出最大的功效。虽然都是开 放源代码的软件,但是这些工具的功能与商业的网络测试工具同样强大,而且也得到了广泛的应用,熟悉这些工具对我们的实际工作一定会有很大的帮助。
最后你可以建立一个脚本来实行服务器的功能性测试,如下:
root@bsd:/home/steven/network # cat netperffortest.sh
netperf -H "$1" -l 30
netperf -H "$1" -l 30
netperf -H "$1" -l 30
netperf -H "$1" -l 30
netperf -H "$1" -l 30
netperf -H "$1" -l 30 -- -m 2048
netperf -H "$1" -l 30 -- -m 2048
netperf -H "$1" -l 30 -- -m 2048
netperf -H "$1" -l 30 -- -m 2048
netperf -H "$1" -l 30 -- -m 2048
netperf -H "$1" -l 30 -- -M 2048
netperf -H "$1" -l 30 -- -M 2048
netperf -H "$1" -l 30 -- -M 2048
netperf -H "$1" -l 30 -- -M 2048
netperf -H "$1" -l 30 -- -M 2048
netperf -H "$1" -l 30 -- -D
netperf -H "$1" -l 30 -- -D
netperf -H "$1" -l 30 -- -D
netperf -H "$1" -l 30 -- -D
netperf -H "$1" -l 30 -- -D
netperf -H "$1" -l 30 -- -s 87380
netperf -H "$1" -l 30 -- -s 87380
netperf -H "$1" -l 30 -- -s 87380
netperf -H "$1" -l 30 -- -s 87380
netperf -H "$1" -l 30 -- -s 87380
netperf -H "$1" -l 30 -- -S 16384
netperf -H "$1" -l 30 -- -S 16384
netperf -H "$1" -l 30 -- -S 16384
netperf -H "$1" -l 30 -- -S 16384
netperf -H "$1" -l 30 -- -S 16384
netperf -t UDP_STREAM -H "$1" -l 30
netperf -t UDP_STREAM -H "$1" -l 30
netperf -t UDP_STREAM -H "$1" -l 30
netperf -t UDP_STREAM -H "$1" -l 30
netperf -t UDP_STREAM -H "$1" -l 30
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024 -M 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024 -M 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024 -M 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024 -M 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 1024 -M 1024
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 87380
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 87380
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 87380
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 87380
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 87380
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 16384
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 16384
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 16384
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 16384
netperf -t UDP_STREAM -H "$1" -l 30 -- -m 16384 -s 16384
netperf -t UDP_STREAM -H "$1" -l 30 -- -D
netperf -t UDP_STREAM -H "$1" -l 30 -- -D
netperf -t UDP_STREAM -H "$1" -l 30 -- -D
netperf -t UDP_STREAM -H "$1" -l 30 -- -D
netperf -t UDP_STREAM -H "$1" -l 30 -- -D
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_CRR -H "$1" -l 30
netperf -t TCP_CRR -H "$1" -l 30
netperf -t TCP_CRR -H "$1" -l 30
netperf -t TCP_CRR -H "$1" -l 30
netperf -t TCP_CRR -H "$1" -l 30
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 32,1024 -S 16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t TCP_CRR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t UDP_RR -H "$1" -l 30
netperf -t UDP_RR -H "$1" -l 30
netperf -t UDP_RR -H "$1" -l 30
netperf -t UDP_RR -H "$1" -l 30
netperf -t UDP_RR -H "$1" -l 30
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t UDP_RR -H "$1" -l 30 -- -r 32,1024 -s 87380
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384 -D
netperf -t UDP_RR -H "$1" -l 30 -- -r 64,16384 -D
root@bsd:/home/steven/network #
Linux netperf网络性能测试的更多相关文章
- 发行版Linux和麒麟操作系统下netperf 网络性能测试
Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求 ...
- [原创]Linux下网络性能测试Netperf工具介绍及安装
[原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...
- Netperf网络性能测试工具详解教程
本文下载链接: [学习笔记]Netperf网络性能测试工具.pdf 一.Netperf工具简介 1.什么是Netperf ? (1)Netperf是由惠普公司开发的一种网络性能测量工具,主要针对基于T ...
- netperf 网络性能测试
Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求 ...
- 【Linux】网络性能测试工具iperf详细使用图文教程【转】
参考链接:https://www.cnblogs.com/yingsong/p/5682080.html Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量. Iperf可以测 ...
- iperf/netperf网络性能测试工具、Wireshark网络包分析工具
iperf http://www.linuxidc.com/Linux/2014-05/101160.htm netperf http://www.linuxidc.com/Linux/2013 ...
- Linux系统性能测试工具(八)——网络性能测试工具之netperf
本文介绍关于Linux系统(适用于centos/ubuntu等)的网络性能测试工具-iperf.磁盘io性能测试工具包括: iperf: netperf 参考链接:https://www.jiansh ...
- TCP/UDP网络性能测试工具 - Netperf (zz) ..网络测试工具
在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多. 除了netperf以外. 还有很多其它的网络性能测试工具. 如db, ...
- Linux 网络性能测试工具 iperf 的安装和使用
简介:Iperf是一个网络性能测试工具.可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失.Iperf在Linux和windows平台 ...
随机推荐
- C++中的广义集合于for范围访问
在C++11中可以通过for在范围循环中访问广义集合 如: std::vetcor v={1,2,3}; int a[4] {1,2,3,4}; std::array<int,4>a2 { ...
- PAT B1038 统计同成绩学生
读入N名同学的成绩,然后将获得某一给定分数的学生人数输出第一行给出不超过10^5的正整数,即学生总数:第二行给出N名学生的百分制的成绩,中间以空格分隔:第三行给出要查寻的分数个数K,随后是K个分数,中 ...
- Mysql事务原理
一.什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再分割的操作集合(工作逻辑单元): ...
- 弦图及其在 OI 中的现代应用
八月份的时候得知要填综评表格,综评表格里面又需要一个研究性学习报告,而我连研究性学习课的老师长啥样都不知道.于是我把两份 OI 笔记拼拼凑凑成了这篇文章充当两份研究性学习报告之一(另一份可能更有趣一些 ...
- Lua OpenResty容器化(考古历程)
原文地址:Lua OpenResty容器化(考古历程) 背景 公司有几个"远古时期"的项目,一直都相对较为稳定,但是项目每天总会在一些时段,请求每分钟QPS到达峰值800K左右,导 ...
- Effective Java 笔记
1. 静态工厂 静态工厂的第 5 个优点是,在编写包含该方法的类时,返回的对象的类不需要存在.他的意思是面向接口编程??就是说我们只需知道接口,具体实现类是否存在没有关系?? 只提供静态工厂方法的主要 ...
- VUE+Element 前端应用开发框架功能介绍
前面介绍了很多ABP系列的文章<ABP框架使用>,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机 ...
- 在kubernetes上部署zookeeper,kafka集群
本文采用网上镜像:mirrorgooglecontainers/kubernetes-zookeeper:1.0-3.4.10 准备共享存储:nfs,glusterfs,seaweed或其他,并在no ...
- Python Basics with numpy (optional)
Python Basics with Numpy (optional assignment) Welcome to your first assignment. This exercise gives ...
- 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)
目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...