[每周一更]-(第16期): IOPS的介绍说明

IOPS介绍基础概念

1、IOPS是什么?

IOPS(Input/Output Operations Per Second)是一个用于电脑存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,可以视为是每秒的读写次数。

量测说明
总IOPS每秒读写次数的总和(混合读取及写入测试)
随机读取IOPS每秒平均的随机读取次数
随机写入IOPS每秒平均的随机写入次数
循序读取IOPS每秒平均的循序读取次数
循序写入IOPS每秒平均的循序写入次数

1.1、影响硬盘性能的因素

  • 1.1.1 、寻道时间
  • 1.1.2 、旋转延迟
  • 1.1.3 、 数据传输时间

1.2、衡量性能的指标

1.2.1、 IOPS

IOPS(Input/Output Per
Second)即每秒的输入输出量(或读写次数),即指每秒内系统能处理的I/O请求数量。随机读写频繁的应用,如小文件存储等,关注随机读写性能,IOPS是关键衡量指标。可以推算出磁盘的IOPS = 1000ms / (Tseek +
Trotation + Transfer),如果忽略数据传输时间,理论上可以计算出随机读写最大的IOPS。

常见磁盘的随机读写最大IOPS为:

  • 7200rpm的磁盘 IOPS = 76 IOPS
  • 10000rpm的磁盘IOPS = 111 IOPS
  • 15000rpm的磁盘IOPS = 166 IOPS
1.2.2、 吞吐量

吞吐量(Throughput),指单位时间内可以成功传输的数据数量。 吞吐量是指系统在单位时间内处理请求的数量。

CentOS中测试硬盘:

yum -y install hdparm hdparm -Tt --direct/dev/sdb1 #/dev/sdb1*部分可改
  • -t 评估硬盘的读取效率。
  • -T 评估硬盘快取的读取效率。

以 阿里云服务器为例子(8C16G,云盘260GiB (9600 IOPS))

[root@izwz96bg1pf5e43r6m2zvpz fio-2.0.7]# hdparm -Tt --direct /dev/vda1

/dev/vda1:
Timing O_DIRECT cached reads:   520 MB in 2.00 seconds = 259.46 MB/sec Timing O_DIRECT disk reads: 698 MB in 3.01
seconds = 232.14 MB/sec
1.2.3、使用率、饱和度、IOPS、吞吐量以及响应时间

2、怎么测试硬件和mysql中IOPS的大小?

2.1、测试linux中硬盘的IOPS

参考地址:https://help.aliyun.com/document_detail/147897.html?spm=5176.2020520101.help.dexternal.1f8f4df5Top0sA
2.1.1、FIO安装
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
yum -y install libaio-devel 
tar -zxvf fio-2.0.7.tar.gz 
cd fio-2.0.7 
make && make install
2.1.2、硬盘测试读写参数 参数说明:
参数参数说明
filename=/dev/vda1测试文件名称,通常选择需要测试的盘的data目录
direct=1测试过程绕过机器自带的buffer。使测试结果更真实。
rwrw=randwread 测试随机读的I/O
rw=randwrite测试随机写的I/O
rw=randrw 测试随机混合写和读的I/O
rw=read 测试顺序读的I/O
rw=write 测试顺序写的I/O
rw=rw测试顺序混合写和读的I/O
bs=16k单次io的块文件大小为16k
bsrange=512-2048同上,提定数据块的大小范围
size=5g本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30本次的测试线程为30.
runtime=1000测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psyncio引擎使用pync方式
rwmixwrite=30在混合读写的模式下,写占30%
group_reporting关于显示结果的,汇总每个进程的信息。
lockmem=1g只使用1g内存进行测试。
zero_buffers用0初始化系统buffer。
nrfiles=8每个进程生成文件的数量
  • 随机读测试
fio -filename=/dev/vda1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=15G
-numjobs=20 -runtime=60 -group_reporting -name=mytest

在这里插入图片描述

  • 顺序读:
fio -filename=/dev/vda1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30
-runtime=1000 -group_reporting -name=mytest 
  • 随机写: - 崩了 size 太大了,不要直接运行
fio -filename=/dev/vda1 -direct=1 -iodepth 1
-thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 
  • 顺序写:
fio -filename=/dev/vda1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30
-runtime=1000 -group_reporting -name=mytest 
  • 混合随机读写:
fio -filename=/dev/vda1 -direct=1 -iodepth 1 -thread -rw=randrw
-rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest
-ioscheduler=noop

2.2、sysbench测试

  • mysql性能(TPS、QPS、IOPS)

Sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可以执行数据库在CPU、内存、线程、IO等方面的性能测试。
详细参考:https://help.aliyun.com/document_detail/139562.html

3、IOPS主要干什么用?

关乎硬件的性能问题,就是读写性能,提升业务的并发都起到辅助作用

3.1.IOPS

IOPS:Input/Output operation Per Second, 每秒处理的IO请求次数。
我们知道I/O就是磁盘的读写能力,比如每秒读 300M,写 200M,这个即数据的吞吐量(I/O能力的另一个关键指标),但是 IOPS 指的可不是读写的数据吞吐量,IOPS 指的是每秒能够处理的 I/O 请求次数。

如果想I/O 系统响应够快,那么 IOPS 越高越好,因为IOPS 和硬件有关,所以,要提高IOPS,就目前来看基本只能拼硬件,传统方案是使用多块磁盘通过 RAID 条带后,使 I/O
读写能力获得提升,我们也可以使用固态硬盘SSD来提升IOPS,不过固态硬盘成本可能比较大。

3.2、QPS

QPS:Query Per Second,每秒请求(查询)次数。
这个参数非常重要,可以直观的反映系统的性能,这就像IOPS衡量磁盘每秒钟能接收多少次请求。 我们可以在MySQL命令行模式下执行 status
命令,返回的最后一行输出信息中就包含 QPS 指标。

3.3、TPS

TPS:Transaction Per Second,每秒事务数。 TPS参数MySQL原生没有提供,如果需要我们自己算,可以利用计算的公式:
TPS = (Com_commit + Com_rollback) / Seconds

这个公式有两个状态变量,分别代表提交次数和回滚次数,Seconds 就是我们定义的时间间隔。

3.4、RT,响应时间

响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。 响应时间RT(Response-time)
,是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。

3.5、并发数

并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

4、IOPS在业务场景中会影响哪些?

脚本运行都会涉及,读写数据库

5、引申制约高并发的因素有哪些?

高并发性能指标:QPS、TPS、RT、吞吐量详解

6、OLTP与OLAP的介绍

数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical
Processing)。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值