linux下性能测试工具netperf使用

一、功能简介

netperf是一款针对网络性能测试工具,主要基于TCP或UDP的传输。根据应用的不同,可以进行批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式的性能测试

netperf以Client/Server方式工作。Server端是netserver,用来侦听来自client端的连接,Client端是netperf,用来向Server发起网络测试。在Client与Server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,Client与Server之间会再建立一个测试连接,来回传递特殊的流量模式,用来测试网络的性能

netperf测试结果反映了一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。

、编译安装netperf

网址:http://www.netperf.org/netperf

源码包:netperf-2.4.5.tar.gz

下载源码包->解压->./configure->make->make install。 安装完成之后即可使用netperf。
测试模式

1. 单个TCP连接,批量(bulk)传输大量数据;

2. 单个TCP连接,Client请求/Server应答的交易(transaction)方式;

3. 多个TCP连接,每个连接中一对请求/应答的交易方式;

4. 从Client到Server的单向批量传输;

5. 请求/应答的交易方式。

参数

netperf通过命令行参数来控制测试类型和具体的测试选项。根据作用范围不同,netperf的命令行参数可以分为两大类:全局参数、局部参数,两者之间使用--分隔,格式如下:

netperf [global options]-- [test-specific options]  

常用的命令行参数:

-H host :指定远端运行netserver的server IP地址;

-l testlen:指定测试的时间长度(秒);

-t testname:指定测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR。

其他参数请参考man netperf。

五、运行netperf

Client/Server通过网线与路由器直连,以下实例均运行于下列的测试环境:


Client (IP 172.17.109.20)


Server(IP 172.17.109.248)


内存


1G DDR2


8G DDR3


Net Card


100M


100M


Kernel


2.6.27


2.6.36


OS


Debian5


Debian6


路由器


D-Link DES-1024R 10/100 switch

(一)测试批量网络流量的性能

批量数据传输典型的例子有ftp和其它类似的网络应用(即一次传输整个文件)。根据使用传输协议的不同,批量数据传输又分为TCP批量传输和UDP批量传输。

1.TCP_STREAM

netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM。测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量。

执行netperf命令:netperf -H 172.17.109.248 -l 30,输出结果如下:

Size  Size Size  Time  Throughput

bytes bytes bytes secs.  10^6bits/sec

87380 16384 16384  30.19  94.47

 数据含义:

(1)远端系统(即Server)使用大小为87380字节的socket接收缓冲;

(2)本地系统(即Client)使用大小为16384字节的socket发送缓冲;

(3)向远端系统发送的测试分组大小为16384字节;

(4)测试时间为30秒;

(5)吞吐量的测试结果为94.47Mbits/秒

在默认情况下,netperf发送的测试分组大小为本地系统所使用的socket发送缓冲大小。

在TCP_STREAM方式下,相关的局部参数如下表所示:


参数


说明


-s size


设置本地系统的socket发送与接收缓冲大小


-S size


设置远端系统的socket发送与接收缓冲大小


-m size


设置本地系统发送测试分组的大小


-M size


设置远端系统接收测试分组的大小


-D


对本地与远端系统的socket设置TCP_NODELAY选项

例如,怀疑路由器由于缺乏足够的缓冲区空间,使得转发大的分组时存在问题,我们就可以增加测试分组(-m)的大小,再观察吞吐量的变化。

执行命令: netperf -H 172.17.109.248 -l 30 -- -m 1024,结果如下:

Size  Size  Size   Time  Throughput

bytes bytes  bytes  secs.  10^6bits/sec

87380 16384  1024  30.18  94.47

测试分组的大小由上个例子的16384减少到1024字节,而吞吐量却没有变化,说明路由器不存在缓冲区的问题。

2.UDP_STREAM

UDP_STREAM用来测试进行UDP批量传输时的网络性能。需要注意的是,此时测试分组的大小不得大于socket的发送与接收缓冲大小,否则netperf会报出错提示。执行netperf命令:netperf -t UDP_STEAM -H 172.17.109.248 -- -m 1024,输出结果如下:

Size  Size   Time   Okay  Errors  Throughput

bytes  bytes  secs.   #    #    10^6bits/sec

120832  65507  10.00  1844   0    96.62

671526075     10.00  1844      96.62

结果中有两行数据:第一行显示的是本地系统的发送统计,这里的吞吐量表示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连接中,这种模式常常出现在数据库应用中。

执行netperf命令:netperf-t TCP_RR -H172.17.109.248,输出结果如下:

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     6834.52

1638487380

输出的结果也是两行组成。第一行显示本地系统的情况,第二行显示的是远端系统的信息。平均交易率(transaction rate)为6834.52次/秒。这里的request和response分组的大小都为1个字节,不具有很大的实际意义。用户可以通过相关的参数来改变request和response分组的大小,TCP_RR方式下的参数如下表所示:


参数


说明


-r req,resp


设置request和reponse分组的大小


-s size


设置本地系统的socket发送与接收缓冲大小


-S size


设置远端系统的socket发送与接收缓冲大小


-D


对本地与远端系统的socket设置TCP_NODELAY选项

执行netperf命令:netperf -t TCP_RR -H 172.17.109.248 -- -r 32,1024,输出结果如下:

Local /Remote

Socket Size Request Resp. Elapsed Trans.

Send Recv Size Size Time Rate

bytes Bytes bytes bytes secs. per sec

16384 87380 32 1024 10.00 2889.35

1638487380

可以看出,由于request/reponse的值增加了,导致交易率明显下降。

2.TCP_CRR

与TCP_RR不同,TCP_CRR为每次交易建立一个新的TCP连接。最典型的应用就是HTTP,每次HTTP交易是在一条单独的TCP连接中进行的。因为需要不停地建立新的TCP连接,并且交易结束后拆除TCP连接,交易率一定会受到很大影响。

执行netperf命令:netperf -t TCP_CRR -H 172.17.109.248,输出结果如下:

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 2459.87

1638487380

即使是使用一个字节的request/response分组,交易率也明显降低了,只有2459.87次/秒。TCP_CRR使用与TCP_RR相同的局部参数。

3.UDP_RR

UDP_RR方式使用UDP分组进行request/response的交易过程。由于没有TCP连接所带来的负担,所以我们推测交易率一定会有相应的提升。

执行命令:netperf -t UDP_RR -H 172.17.109.248,输出结果如下:

Local /Remote

Socket  Size   Request  Resp.  Elapsed  Trans.

Send   Recv   Size     Size   Time    Rate

bytes   Bytes  bytes     bytes  secs.   per sec

120832  120832   1       1   10.00   7558.55

118784  118784

结果证实了我们的推测,交易率为7558.55次/秒,高于TCP_RR(6834.52次/秒)的数值。如果出现了相反的结果,即交易率降低了,也不需要担心,这说明在网络中,路由器或其它的网络设备对UDP采用了与TCP不同的缓冲区空间和处理技术。

时间: 2024-10-06 15:08:25

linux下性能测试工具netperf使用的相关文章

二十八、Linux下Vim工具常用命令

在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚接触,本节将我日常使用或收集的Vim常用命令记录下来. 当然,直接在命令行上输入:vimtutor,就可以学习到Vim的所有命令了.Vim很强大,很多牛人在vim里集成很多插件什么的,但这里只介绍基本vim命令 移动命令 h "左 j "下 k "上 l "右 w "光标移动到下一个单词的首字符 a word forward b "光标移动到上一个单词的首

Linux下同步工具inotify+rsync使用详解

Linux下同步工具inotify+rsync使用详解 Posted on 2014-12-12 |  In Linux|  9|  Visitors 438 1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的"Rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.所以通常可以作为备份工具来使用. 运行Rsync serve

linux下rsync工具使用与配置

这篇文章基本介绍全了:http://www.2cto.com/os/201308/238733.html 几点简单备忘: 1. ubuntu下通过apt-get即可安装: 2. 配置文件/etc/rsync.conf默认不存在,需要手动创建: 3. 可以通过守护进程xinetd来启动rsync,在/etc/default/rsync中配置: 4. 服务器在/etc/rsync.passwd中配置登录名和密码,不一定非得这个文件,可以在/etc/rsync.conf中配置每一个共享模块的密码文件:

linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录

先来下载依赖包 和一些必须要用到的工具 我这里用的是 dsniff-2.3 的版本 wget http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.tar.gz wget http://www.8090sec.com/uploads/soft/dsniff-2.3.tar.gz 备用下载 一.安装gcc # yum -y install gcc 二.安装 openssl 直接yum安装也可以的 # tar zxvf openssl-0.9.7i.tar

linux下rsync工具的使用

上节我们详细了解了磁盘的结构和磁盘的管理,我们知道Linux磁盘的管理是通过fdisk命令加参数来实现的,然后格式化是mkfs.ext4命令.最后在通过mount命令挂载到相应的目录下就可以使用了.今天我们讲解一个比较常用的工具-rsync.记得是比较常用!下面我为他做个简单的介绍: rsync是一个备份工具可以实现增量与全量备份 rsync 有三种工作模式 第一种是本地的CP 使用方法: cp功能: rsync -avzfenfawenjian fenfawenjian2 第二种是局域网之间的

TCP/UDP网络性能测试工具 - Netperf (zz) ..网络测试工具

在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多. 除了netperf以外.       还有很多其它的网络性能测试工具.       如db, iperf, ptrte, nettet, netlogger, tcptrce, ntop等.这些工具有其各自的特色和不同的侧重点,我们可以根据具体的应用环境,有选择的使用它们,这样就可以使这些工具发挥出最大的功效.虽然都是开 放源代码的软件.       但是这些工具的功能与商业的网络测试工具

Linux下应急工具

Linux下的应急工具 在Linux下,应急的查看点无非那个几个,一是看表现(宕机.高CPU.高内存.高IO.高网络通信),二看连接.三看进程.四看日志.五看文件(Linux一切皆文件),再者结合起来看.所以针对常见的应急操作自己写了两个小工具.目前支持CentOS和RedHat,其实由于基于Python,基本是跨平台,绝大部分功能支持其他发行版本的Linux甚至Windows. 工具的安装 #要求root权限 git clone https://github.com/cisp/LinuxEme

linux下常用工具安装

1.安装rz sz上传下载   yum install lrzsz 2.安装jdk 下载jdk放在指定目录 vim /etc/profileexport JAVA_HOME=linux下jdk路径export PATH=$PATH:$JAVA_HOME/binsource /etc/profileecho $PATH 3.安装mysql数据库 MySQL-client-5.6.21-1.rhel5.x86_64.rpm MySQL-devel-5.6.21-1.rhel5.x86_64.rpm

Linux下SSH工具 PAC Manager的安装

PAC Manager, Liux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Connector) Manager is a open source tool in Linux like operating system, which provides GUI (graphical user interface) to manage ssh,telnet, sftp, rdeskt