网络测速配置

第一章:网速测试(speedtest-cli、iperf3)

1、带宽压测(speedtest-cli)

  • 方法一:

speedtest-cli是基于python开发的网络测速工具,有python环境的系统都可使用下列步骤的命令

步骤一:安装speedtest-cli

# pip3 install speedtest-cli

注:pip安装speedtest-cli需要python支持,请确保系统有安装python( pip已内置于Python3.4和2.7及以上版本,其他版本需另行安装),并且根据python版本选择使用pip或者pip3

步骤二:测速

# speedtest-cli

Linux网络、磁盘IO性能测试

  • 方法二:

# wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py 
# chmod +x speedtest-cli# ./speedtest-cli

2、带宽打流测速(iperf3)

Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,可以用来测量网络带宽和网络质量,提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。

Iperf 是一款基于命令行模式的网络性能测试工具,是跨平台的,提供横跨Windows、Linux、Mac的全平台支持。iperf 全程使用内存作为发送/接收缓冲区,不受磁盘性能的影响,对于机器配置要求很低。不过由于是命令行工具, iperf 不支持输出测试图形。

Iperf可以测试TCP和UDP带宽质量,具有多种参数和UDP特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。

1、iperf的版本

Iperf有两种版本,windows版和linux版本。

(1)Unix/Linux版

Unix/Linux版更新比较快,版本最新,目前最新的版本是iperf3.0。

Linux版本下载地址:http://code.google.com/p/iperf/downloads/list

为了测试的准确性,尽量使用linux环境测试。

(2)Windows版

Windows版iperf叫jperf,或者xjperf,更新慢,目前最新版本为1.7(打包在jperf中)。

Windows版本下载地址:http://sourceforge.net/projects/iperf/files/jperf/jperf%202.0.0/

jperf是在iperf基础上开发的图形界面程序,简化了复杂命令行参数的构造,而且还能保存测试结果,同时实时图形化显示结果。

2、Windows版iperf安装

对于windows版的iperf,下载安装包后直接解压,然后将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可。

3、Linux版iperf安装


(1)在线安装:

CentOS安装:yum install -y iperf3

Debian和Ubuntu安装:apt-get install iperf3

(2)离线安装:下载相应版本的安装包

gunzip -c iperf-.tar.gz | tar -xvf – cd iperf- ./configure make make install

4、Iperf的工作模式

在完成iperf安装后,执行“iperf3 –h”即可显示iperf的详细用法。iperf的命令行选项共分为三类,分别是客户端与服务器端公用选项、服务器端专用选项和客户端专用选项。

5、Iperf常用参数(测试够用)

(1)-s,–server:iperf服务器模式,默认启动的监听端口为5201,eg:iperf -s

(2)-c,–client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23

(3)-i,–interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2

(4)-p,–port:指定服务器端监听的端口或客户端所连接的端口,默认是5001端口。

(5)-u,–udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。

(6)-l,–len:设置读写缓冲区的长度,单位为 Byte。TCP方式默认为8KB,UDP方式默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。

(7)-b,–bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。

(8)-t,–time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。

(9)-A:CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。

6、通用参数(Server端和Client端共用)

(1)-f,–farmat [k|m|g|K|M|G]:指定带宽输出单位,“[k|m|g|K|M|G]”分别表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes显示输出结果,默认Mbits,eg:iperf3 -c 192.168.12.168 -f M

(2)-p,–port:指定服务器端监听的端口或客户端所连接的端口,默认是5001端口。

(3)-i,–interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2

(4)-F:指定文件作为数据流进行带宽测试。例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz

7、Server端专用参数

(1)-s,–server:iperf服务器模式,默认启动的监听端口为5201,eg:iperf -s

(2)-c,–client host:如果iperf运行在服务器模式,并且用-c参数指定一个主机,那么iperf将只接受指定主机的连接。此参数不能工作于UDP模式。

(3)-D:Unix平台下将Iperf作为后台守护进程运行。在Win32平台下,Iperf将作为服务运行。

(4)-R:卸载Iperf服务(仅用于Windows)。

(5)-o:重定向输出到指定文件(仅用于Windows)。

(6)-P,–parallel:服务器关闭之前保持的连接数。默认是0,这意味着永远接受连接。

8、Client端专用参数

(1)-c,–client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23

(2)-u,–udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。

(3)-b,–bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。

(4)-t,–time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。

(5)-l,–len:设置读写缓冲区的长度,单位为 Byte。TCP默认为8KB,UDP默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。

(6)-n,–num [K|M|G]:指定传输数据包的字节数,例如:iperf3 -c 192.168.12.168 –n 100M

(7)-P,–parallel:指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数。

(8)-w,–window:指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值

(9)-B,–bind:用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组。

(10)-M,–mss:设置TCP最大信息段的值

(11)-N,–nodelay:设置TCP无延时

(12)-V:绑定一个IPv6地址。

(13)-d,–dualtest:运行双测试模式。将使服务器端反向连接到客户端,使用-L参数中指定的端口(或默认使用客户端连接到服务器端的端口)。使用参数-r以运行交互模式。

(14)-L,–listenport:指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。

(15)-r,–tradeoff:往复测试模式。当客户端到服务器端的测试结束时,服务器端反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。

9、Iperf使用实例

这里用两台Centos7.4主机进行测试

server端:10.13.23.197

client端:10.13.120.173

步骤一:安装iperf3

# yum install -y iperf3

步骤二:server端启动iperf3

# iperf3 -s -p 1234 -B 10.13.23.197

参数:

-s:以server模式启动

-p:设置server端通信端口

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

其他可用参数:

-u:使用UDP协议。默认使用TCP

步骤三:client端执行命令测速

参数:

-c:指定server端地址

-p:指定server端端口

-i:设置报告之间的时间间隔,单位为秒,默认为0

-t:指定测试总时长。单位为秒,默认为10

-P:指定并行连接数

其他可用参数:

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

-n:指定传输的字节数

# iperf3 -c 10.13.23.197 -p 1234 -i1 -t10 -P8

2、测试TCP吞吐量
(1)Server端开启iperf的服务器模式,指定TCP端口:
[root@iperf-server ~]# iperf3 -s -i 1 -p 520
------------------------------------------------------------
Server listening on TCP port 520
TCP window size: 85.3 KByte (default)
------------------------------------------------------------


(2)Client端启动iperf的客户端模式,连接服务端
[root@iperf-client ~]# iperf -c 192.168.0.120 -i 1 -t 60 -p 520
------------------------------------------------------------
Client connecting to 192.168.0.120, TCP port 520
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.121 port 50616 connected with 192.168.0.120 port 520
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec


(3)Server端监听结果
------------------------------------------------------------
Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.0.120 port 520 connected with 192.168.0.121 port 50616
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

① Interval表示时间间隔。

② Transfer表示时间间隔里面转输的数据量。

③ Bandwidth是时间间隔里的传输速率。

(4)测试多线程TCP吞吐量

如果没有指定发送方式,iPerf客户端只会使用单线程。

iperf3 -c 192.168.0.120 -P 30 -t 60

(5)进行上下行带宽测试(双向传输)
iperf3 -c 192.168.0.120 -d -t 60

(6)停止iperf3服务进程

要停止iperf3服务进程,请按CTRL+z或CTRL+c

建议在Server端执行sar命令来统计实际收到的包并作为实际结果:sar -n DEV 1 320

3、测试UDP吞吐量

带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。

(1)Server端开启iperf的服务器模式,指定UDP端口:
[root@iperf-server ~]# iperf3 -s -i 1 -p 521
------------------------------------------------------------
Server listening on port 521
------------------------------------------------------------


(2)Client端启动iperf的客户端模式,连接服务端
[root@iperf-client ~]# iperf3 -u -c 192.168.0.120 -b 100m -t 60 -p 521
------------------------------------------------------------
Client connecting to 192.168.0.120, port 521
------------------------------------------------------------
[ 3] local 192.168.0.121 port 50616 connected with 192.168.0.120 port 521
[ ID] Interval Transfer Bandwidth TotalDatagrams
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec 82


(3)Server端监听结果
------------------------------------------------------------
Server listening on port 521
------------------------------------------------------------
[ 4] local 192.168.0.120 port 520 connected with 192.168.0.121 port 50616
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec 0.007 ms 0/82 (0%)

① Jitter为抖动,在连续传输中的平滑平均值差。

② Lost为丢包数量。

③ Total Datagrams为包数量。

(4)测试多线程UDP吞吐量

如果没有指定发送方式,iPerf客户端只会使用单线程。

iperf3 -u -c 192.168.1.1 -b 5M -P 30 -t 60

(5)进行上下行带宽测试(双向传输)
iperf3 -u -c 192.168.1.1 -b 100M -d -t 60

二、磁盘IO性能测试

fio 是一款Linux平台上的磁盘性能测试工具。支持13种不同的I/O引擎,包括:sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio等等, I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs等。

1、fio yum安装

# yum install fio -y

2、4k顺序读/写

# 4k顺序读
# fio -filename=/data/test -direct=1 -iodepth=1 -thread -rw=read -ioengine=libaio -bs=4K  -numjobs=2 -runtime=10000 -group_reporting -name=test -size=5G

# 4k顺序写
# fio -filename=/data/test -direct=1 -iodepth=1 -thread -rw=write -ioengine=libaio -bs=4K  -numjobs=2 -runtime=10000 -group_reporting -name=test -size=5G

3、4k随机读/写

# 4k随机读
# fio -filename=/data/test -direct=1 -iodepth=1 -thread -rw=randread -ioengine=libaio -bs=4K  -numjobs=2 -runtime=10000 -group_reporting -name=test -size=5G


# 4k随机写
# fio -filename=/data/test -direct=1 -iodepth=1 -thread -rw=randwrite -ioengine=libaio -bs=4K  -numjobs=2 -runtime=10000 -group_reporting -name=test -size=5G

4、4k混合随机读写

# fio -filename=/data/test -direct=1 -iodepth=1 -thread -rw=randrw -ioengine=libaio -bs=4K  -numjobs=2 -runtime=10000 -group_reporting -name=test -size=5G

5、参数汇总

参数

解析

-filename=/data/test

定义测试文件(设备)的名称。 选择文件,则表示文件系统性能如:-filename=/data/test;选择设备名称则表示裸盘性能,如-filename=/dev/sdb

-direct=1

是否使用缓存。0: buffered IO,1: direct IO。选1直接写入磁盘,结果更为真实

-rw=randread

定义读写策略,值如下:随机读:randread,随机写:randwrite,顺序读: read,顺序写:write,混合随机读写:randrw

-bs=4k

定义IO的块大小(block size),单位是k、K、m和M等,默认IO块大小为4KB

-bsrange=512-2048

定义IO块大小范围

-size=5g

定义测试IO的数据大小

-numjobs=2

定义测试的并发线程数

-iodepth=1

定义测试时的IO队列深度,默认为1。 fio总的IO并发数 =iodepth * numjobs

-runtime=1000

定义测试时间。 如果未配置,则持续将size指定的文件大小,以每次bs值为分块大小读/ 写完

-ioengine=psync

io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包

-rwmixwrite=30

在混合读写的模式下,写占30%

-group_reporting

汇总每个进程的统计信息

-lockmem=1g

只使用1g内存进行测试

–zero_buffers

用0初始化系统buffer

–nrfiles=8

每个进程生成文件的数量

-name=test

定义测试任务名称

–output TestResult.log

日志输出到TestResult.log

6、结果分析

注:msec=毫秒; usec=微秒;1s=1000msec=1000000ues
read/write    io:执行了多少M的IO    bw:平均IO带宽    iops:IOPS    runt:线程运行时间
    slat:提交延迟
    clat:完成延迟
    lat:响应时间
    bw:带宽


cpu:利用率
IO depths:io队列
    submit:单个IO提交要提交的IO数
    complete:Like the above submit number, but for completions instead.
    issued:The number of read/write requests issued, and how many of them were short.
    latency:IO完延迟的分布


Run status group 0 (all jobs):
io:总共执行多少M的IO    aggrb:group总带宽    minb:最小.平均带宽    maxb:最大平均带宽    mint:group中线程的最短运行时间    maxt:group中线程的最长运行时间


Disk stats (read/write):
ios:所有group总共执行的IO数    merge:总共发生的IO合并数    ticks:Number of ticks we kept the disk busy    io_queue:花费在队列上的总共时间    util:磁盘利用率

 文档参考:Iperf3网络性能测试工具详解教程 - pycod - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值