zoukankan      html  css  js  c++  java
  • iperf测试网络性能

     
     

    分类: LINUX

    2013-06-17 18:52:21

     
      Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失  

       因为产品上确定要要用的PHY是千M的,但模块接口又定义死了,只能用到100M。所以想测试下割掉几根线试下100M可行不。在测之前先测下千M模式下到底性能怎么样,之前别人一直说这我手头上这颗ARM根本上不了千M,虽然他标称的是可以支持千M。一准备工作做好了,开始。

    我们使用的工具是iperf这个工具我是自己编译的。现在将我的过程写下来。iperf下载地址
    先编译PC端工具:
    1.解压源码:
    $ tar xzvf iperf-2.0.5.tar.gz
    2.进入源码目录
    $ cd iperf-2.0.5
    3.配置源码 编译PC下的不用指定参数,用默认的即可
    $  ./configure
    4.编译 后面的-j4不是必须的。
    $ make -j4
    5.安装 这里要注意要用管理员权限
    # make install

    $ iperf -s 就可以启动服务端。

    ARM端:
    1.清理源码(就是刚才编译过的源码)
    $ make distclean
    2.设置环境变量 (就是你的ARM交叉编译工具链,根据自己的实际情况改)
    $ export PATH=/home/gavin/ti-sdk-am335x-evm-05.06.00.00/linux-devkit/bin:$PATH
    3.配置 指定主机为ARM g++编译器和gcc 这里根据自己的实际情况改
    $ ./configure --host=arm CXX=arm-arago-linux-gnueabi-g++ CC=arm-arago-linux-gnueabi-gcc
    4.修改源码目录下面的config.h(没配置之前是没有这个文件的),注释掉 #define malloc rpl_malloc
    5.编译
    $ make -j4
    在iperf-2.0.5/src/下会生成iperf这个文件,这个就是我们需要的。将这个文件拷到ARM的文件系统中去。这样PC端和ARM端的都有了。

    至于iperf的使用,就不多介绍了,直接在网上copy一段下来。

    Iperf使用方法与参数说明

    参数说明

    -s 以server模式启动,eg:iperf -s 上行测试

    -c host以client模式启动,host是server端地址,eg:iperf -c 10.0.0.2   下行测试

    通用参数

    -f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 10.0.0.2 -f K

    -i sec 以秒为单位显示报告间隔,eg:iperf -c 10.0.0.2 -i 2

    -l 缓冲区大小,默认是8KB,eg:iperf -c 10.0.0.2 -l 16

    -m 显示tcp最大mtu值

    -o 将报告和错误信息输出到文件eg:iperf -c 10.0.0.2 -o ciperflog.txt

    -p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 10.0.0.2 -p 9999

    -u 使用udp协议

    -w 指定TCP窗口大小,默认是8KB

    -B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)

    -b 指定带宽例如120M

    -C 兼容旧版本(当server端和client端版本不一样时使用)

    -M 设定TCP数据包的最大mtu值

    -N 设定TCP不延时

    -V 传输ipv6数据包

    server专用参数

    -D 以服务方式运行iperf,eg:iperf -s -D

    -R 停止iperf服务,针对-D,eg:iperf -s -R

    client端专用参数

    -d 同时进行双向传输测试

    -n 指定传输的字节数,eg:iperf -c 10.0.0.2 -n 100000

    -r 单独进行双向传输测试

    -t 测试时间,默认10秒,eg:iperf -c 10.0.0.2 -t 5

    -F 指定需要传输的文件

    -T 指定ttl值

    应用实例

    使用 iperf -s 命令将 Iperf 启动为 server 模式,在客户机上使用 iperf -c启动client模式。

    iperf –s

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

    iperf -c 10.0.0.2

    上面使用服务端和客户端的默认设置进行测试

    iperf -s -w 300K

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size:  300 KByte

    ------------------------------------------------------------

    iperf -c 10.0.0.2-f K -i 2 -w 300K

           设定报告间隔为2秒,服务器端和客户端的TCP窗口都开到300KB

    iperf -c 10.0.0.2 -f K -i 2 -w 300K –n 1000000

    测试传输约1MB数据

    iperf -c 10.0.0.2 -f K -i 2 -w 300K –t 36

    测试持续36秒

    iperf -c 10.0.0.2 -f K -i 2 -w 300K -n 10400000 –d

    测试双向的传输

    iperf -c 10.0.0.2 -f K -i 2 -w 300K –u

    UDP测试

    其中 -i 参数的含义是周期性报告的时间间隔(interval),单位为秒;在上面的例子中,表示每隔2秒报告一次带宽等信息。

    先在PC端启动$ iperf -s



    再在ARM端执行
    $ iperf -c 10.0.0.2 -f K -i 2 -w 300K -n 10000000 -t 180

    执行完后,在服务器端会打印结果如下:

    这能不坑爹吗,号秒千M,跑出来是270M。

    我上面这些测试数据都是通过路由器来测的,我路由器是千M的。
  • 相关阅读:
    设计模式六大原则(PHP)
    composer update 或者 composer install提示killed解决办法
    运行composer出现do not run Composer as root/super user!
    composer install报错intervention/image 2.4.x-dev requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    laravel执行数据库迁移的过程中出现IlluminateDatabaseQueryException : SQLSTATE[HY000] [2002] Operation timed out (SQL: select * from information_schema.tables where table_schema = shop and table_name = migrations
    docker删除mysql镜像失败Error response from daemon: conflict: unable to delete 8809d5286227 (must be forced)
    测试开发岗,面试必看
    Python遍历字典去key和value需要注意的点→enumerate和items()
    Python→整数反转
    我去阿里、头条、京东的面试经(测开)
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/9051009.html
Copyright © 2011-2022 走看看