Linux网络、磁盘IO性能测试

工具教程6个月前更新 huiye
716 0

导航:本篇从网络、磁盘IO方面测试Linux系统的性能

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

第二章:磁盘IO性能测试(fio)

注:本文以Centos7.4作为测试系统

一、网速测试

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)

iperf3是⼀款⽹络性能测试⼯具,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。

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

server端:10.13.23.197

client端:10.13.120.173

步骤一:安装iperf3

# yum install -y iperf3

步骤二:server端启动iper3

# iperf3 -s -p 1234 -B 10.13.23.197

参数:

-s:以server模式启动

-p:设置server端通信端口

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

其他可用参数:

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

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

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

参数:

-c:指定server端地址

-p:指定server端端口

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

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

-P:指定并行连接数

其他可用参数:

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

-n:指定传输的字节数

Linux网络、磁盘IO性能测试

 

二、磁盘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:磁盘利用率

文档参考:https://starcto.com/stress-test/260.html

© 版权声明

相关文章