惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
博客园 - 聂微东
爱范儿
爱范儿
罗磊的独立博客
P
Proofpoint News Feed
博客园 - Franky
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
美团技术团队
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
A
About on SuperTechFans
I
InfoQ
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog

灰叶的笔记

Linux逻辑卷2-扩容/常用命令汇总 | 灰叶的笔记 Dockerfile 容器镜像构建 | 灰叶的笔记 Linux 查看内存和实际物理内存大小不一致 | 灰叶的笔记 GCP创建泛域名证书(域名托管在CloudFlare) | 灰叶的笔记 Docker基础指令-镜像相关 | 灰叶的笔记 Docker基础指令-容器相关 | 灰叶的笔记 GCP和AWS使用PCCW专线互联 | 灰叶的笔记 使用 OpenTelemetry 采集日志推送至 GCP Cloud Logging | 灰叶的笔记 vim编辑器常用操作 | 灰叶的笔记 Linux主机是否被入侵的11个排查步骤 | 灰叶的笔记 Ubuntu 安装 Docker-CE | 灰叶的笔记 Fail2Ban-Linux防SSH暴力破解工具 | 灰叶的笔记 公用云Linux快照创建磁盘挂载问题 | 灰叶的笔记 ubuntu 安装图形化桌面 | 灰叶的笔记 iptables基础命令与filter表相关命令 | 灰叶的笔记 Linux逻辑卷 | 灰叶的笔记 UCloud CentOS6.X修改hostname | 灰叶的笔记 软件源安装Dokcer | 灰叶的笔记 Ubuntu系统启用root用户ssh远程登录 | 灰叶的笔记 Windows Server关闭IE增强 | 灰叶的笔记 windows云服务器开启媒体声音 | 灰叶的笔记 MySQL5.7多实例部署 | 灰叶的笔记 nc网络工具 | 灰叶的笔记 WinServer2008云服务器系统盘可压缩空间不足 | 灰叶的笔记 Rocky Linux8.5 UCloud官方镜像进入单用户模式 | 灰叶的笔记 UCloud官方Linux 镜像进入单用户模式汇总 | 灰叶的笔记 Debian10 UCloud官方镜像进入单用户模式 | 灰叶的笔记 CentOS6 UCloud官方镜像进入单用户模式 | 灰叶的笔记 CentOS7/8 UCloud官方镜像进入单用户模式 | 灰叶的笔记 Ubuntu UCloud官方镜像进入单用户模式 | 灰叶的笔记
Linux网络、磁盘IO性能测试 | 灰叶的笔记
huiye · 2022-05-26 · via 灰叶的笔记

导航:本篇从网络、磁盘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