基准测试之 netperf

安装

在 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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值