安装
在 github 上 下载 你 需要 的版本 https://github.com/HewlettPackard/netperf
我下载 的 是
netperf-netperf-2.5.0.zip
然后 解压
unzip netperf-netperf-2.5.0.zip
进去 根目录
cd netperf-netperf-2.5.0
./configure --prefix /usr/local/netperf/
make && make install
netperf 是一种网络性能的测量工具,主要针对 基于TCP或UDP 的传输。netperf 根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer) 模式 和 请求/应答(request/reponse)模式。netperf 测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据
netperf 工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client 与 server之间,首先 建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制 连接 建立 并 传递了测试 配置信息以后,client 与 server之间会再建立一个测试连接,用来 来回传递着 特殊的流量模式,以测试网络的性能
Netperf 可以模拟三种不同的TCP流量模式:
1) 单个TCP连接,批量(bulk)传输大量数据
2) 单个TCP连接,client请求 / server 应答的交易(transaction)方式
3) 多个TCP连接,每个连接中一对 请求 / 应答的交易方式
Netperf 可以模拟 两种UDP的流量模式:
1) 从client 到 server 的单向 批量 传输
2) 请求/应答的交易方式
netperf 的命令行参数
-H host : 指定远端运行 netserver的 server IP地址
-l testlen : 指定 测试 的时间 长度(秒)
-t testname : 指定 进行 的 测试类型
包括
TCP_STREAM : TCP 批量传输,Netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM
[root@localhost bin]# ./netperf -H 192.168.43.132 -l 60
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.43.132 (192.168.43.132) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 60.00 3702.73
1) server 使用大小为87380字节的socket接收缓冲
2) client 使用大小为16384字节的 socket 发送缓冲
3) 向远端系统发送 的测试 分组大小为 16384字节
4) 测试经历的 时间 为 60秒
测试结果 表明,TCP 带宽为 3702Mbps
UDP_STREAM
用来测试进行 UDP批量传输时的网络性能。
[root@localhost bin]# ./netperf -t UDP_STREAM -H 192.168.43.132 -l 60
MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.43.132 (192.168.43.132) port 0 AF_INET
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
212992 65507 60.00 140546 0 1227.56
212992 60.00 140545 1227.55
第一行 结果是 本地 的发送 统计,也就是本地发送UDP的吞吐量为 1227Mbps
第二行 是 server 端 的接收统计,吞吐量 为 1227Mbps
TCP_RR
TCP_RR方式的测试对象是多次TCP request 和 response 的交易过程,但是它们发生在同一个TCP连接中
[root@localhost bin]# ./netperf -t TCP_RR -H 192.168.43.132
MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.43.132 (192.168.43.132) port 0 AF_INET : 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 87380 1 1 10.00 1760.35
16384 87380
C/S 两端每秒 的 transaction 次数 是 1760
TCP_CRR
TCP_CRR 为每次交易建立一个新的TCP连接。
[root@localhost bin]# ./netperf -t TCP_CRR -H 192.168.43.132
MIGRATED TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.43.132 (192.168.43.132) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 10.00 503.96
16384 87380
与TCP_RR 不同 , TCP_CRR为每次交易建立一个新的TCP连接。最典型的应用就是HTTP,每次HTTP交易是在一条单独的TCP连接中进行的。因此,由于需要不停地建立新的TCP连接,并在交易结束拆除TCP连接,交易率一定会受到 很大的影响
即使是使用1个字节 的request/reponse分组,交易率也明显的降低了,只有503次/s
UDP_RR
有请求/响应的 UDP测试
[root@localhost bin]# ./netperf -t UDP_RR -H 192.168.43.132
MIGRATED UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.43.132 (192.168.43.132) port 0 AF_INET : 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 10.00 1992.19
212992 212992
C/S 两端 每秒transaction 次数 是 1992
参考资源
http://www.360doc.com/content/09/0724/09/41237_4414007.shtml
<linux性能优化大师.pdf>
http://www.360doc.com/content/09/0724/09/41237_4414007.shtml