深聊性能测试,从入门到放弃之:如何对IO进行性能调优

1、引言

性能这块,虽然是小鱼一直不想去触碰的地方,
但是,身在江湖漂,哪能不带刀!!

小屌丝:鱼哥,最近你得注意身体啊
小鱼:昂… 怎么突然关心起我来了?
小屌丝:还用我说嘛,最近你博文更新的慢,不是在耍妹子,就是在去耍妹子的路上。
小鱼:( ‵o′)凸…我这是在忙工作的事情
小屌丝:我差点信了!!
小鱼:…算了,我不替自己解释了, 我替IO解释吧!
小屌丝:难道,今天要整IO? 那赶紧!

在认识IO之前,我们要先了解 一下磁盘。
然后在慢慢的认识IO

2、 硬盘知识

2.1 磁盘原理

1、定义
盘片以每分钟数千转到上万转的速度在高速旋转,15K 10k 7.5k 5.2k RPM
磁头就能对盘片上的指定位置进行数据的读写操作
磁头磁化磁盘记录数据

2、图片
在这里插入图片描述
在这里插入图片描述
3、HDD示意图
在这里插入图片描述

2.2 磁盘接口

ATA:(IDE 电子集成驱动器 16Bit总线)可达133M/s
SATA:(串行ATA 8位总线)可达300M/s,甚至600M/s

小屌丝:为什么并行的ATA没有串行的SATA快呢?
小鱼:因为时钟频率不一样,一个时钟内ATA比SATA传输的数据要多

小屌丝:那为什么ATA不反提高时钟频率?
小鱼:排线多,信息干扰与同步问题啊。
小屌丝:哦,原来是这样啊。

2.3 磁盘读写

1. 随机访问(Random Access)
本次IO所给出的扇区地址和上次IO给出扇区地址相差比较大,这样的话磁头在两次IO操作之间需要作比较大的移动动作才能重新开始读/写数据

2. 连续访问(Sequential Access)
当次IO给出的扇区地址与上次IO结束的扇区地址一致或者是接近的话,那磁头就能很快的开始这次IO操作

3. 顺序IO模式(Queue Mode)
磁盘控制器可能会一次对磁盘组发出一连串的IO命令,如果磁盘组一次只能执行一个IO命令

4. 并发IO模式(Burst Mode)
当磁盘组能同时执行多个IO命令时,称为并发IO。并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一个IO命令

2.4 磁盘KPI

IOPS(IO per Second)
定义
IO系统每秒所执行的IO操作的次数

图片解析
在这里插入图片描述
计算公式

IO Time = Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate

IOPS = 1/IO Time = 1/(Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate)

2.5 计算

2.5.1 IOPS计算

为了更直观了解IOPS的计算,
老规矩,上例子
①参数举例
PRM: rpm = round per minute转/每分钟
转速:7.2K RPM
Avg寻道时间:5ms
平均旋转延时:(60s/7.2K)*1/2=4.17ms

最坏情况:转一圈才开始读数据,乘1/2是把读写分开取二分之一

单位IO:比如最大传输速度50M

8K的块,传输时间 =8/50 = 0.156ms

②计算IOPS

IOPS = 1/(5ms+4.17ms+0.156ms)=107 次

2.5.2 传输速率/吞吐率计算

①计算公式
Transfer Rate = IOPS * IO Chunk Size(块大小)

②参数举例
IOPS = 1000
Chunk Size = 8K
TR = 1000 x 8K =8M/s

2.6 IO延时

2.6.1 瓶颈表象

①定义
磁盘IO延时(IO Latency)

也称为IO响应时间,是指内核对磁盘发出一个读或者写的IO命令,到内核接收到回应的时间,IO响应时间包括IO操作在磁盘处理的时间和IO操作在IO等待队列中所花费的等待时间。

单个IO时间
仅仅指的是IO操作在磁盘内部处理的时间,而IO响应时间还要包括IO操作在IO等待队列中所花费的等待时间。

图片解析
在这里插入图片描述

3、IO监控

3.1 windows系统

我们可以直接使用windows自带的监控器
在电脑打开 “性能监视器”,既可看到想看的…
在这里插入图片描述

由于小鱼电脑有上帝模式,所以,就直接打开 性能监视器

3.2 windows IO性能

1. 单次IO大小

Avg.Disk Bytes/Read
AvgDisk Bytes/Write

2. IO响应时间

Avg.Disk sec/Read
Avg.Disk sec/Write

3. IOPS

Disk Reads/sec(<15ms)
Disk Writes/sec(<15ms)
Disk Transfers/sec

4. IO吞吐率

Disk Bytes/sec
Disk Read Bytes/sec
Disk Write Bytes/sec

5. Physical Disk
Physical Disk : Avg.Disk Queue Length (Q<2)

6. Page faults/sec
>>> Pages Input /sec (Read from disk pages)
>>>Pages Read/sec (Read form disk times)

7. Pages Output/sec
>>>Pages Output/sec(Write to disk)

3.3 Bi BO 流程图

在这里插入图片描述

3.4 磁盘性能分析

定义
1、Physical Disk : % Disk Time

2、Physical Disk : Avg.Disk Queue Length <2*盘数

3、Memory :Page Reads/sec

如果内存中没有,那么需要从磁盘中读取

列表展示

PRQDTResult
LHH磁盘瓶颈
HHH内在瓶颈

名词解析
PR
Memery Page Reads/sec

Q
Physical Disk Avg.Disk Queue Length

DT
Physical Disk Time

L
Low
H
High

4、IO调整

4.1 磁盘速度改进

改进方式,主要分两种:
磁盘快取监控(disk cache controller)
磁盘列阵技术

4.1.1 磁盘快取监控(disk cache controller)

定义

将从磁盘读取的数据存在快取内存(cache memory)中,以减少磁盘存储的次数。
数据的读取都在快取内存中进行,大幅增加存取的速度。
如果要读取的数据不在快取内存中,或要写数据到磁盘时,才做磁盘的存取动作。

注意点
这种方式在单工环境(single-tasking environment),如DOS之下,对大量数据的存储有很好的性能,
但是在多工环境(multi - tasking environment)或数据库(database)的存取,就不能显示其性能。
并且,这种方式,没有任何安全保障

多工环境:要不停的做数据交换的动作
数据库:因为每一次记录都很小

4.1.2 磁盘列阵技术

定义

磁盘列阵是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方式存储在不同的磁盘中,存取数据时,列阵中的相关磁盘一起动作,大幅降低数据的存取时间,同时有更佳的空间利用率。
磁盘阵列所利用的不同的技术,称为RAID Level,不同的Level针对不同的系统及应用,以解决数据安全的问题。

RAID Level 等级分类

1. RAID 0

①定义
将数据条带化(striping),将连续的数据分散到多个磁盘上进行存取,系统发出的IO命令(不管读/写)就可以在磁盘上被并行执行。
由于每个磁盘单独执行自己的那部分请求,故,这大大增强整个存储的系统的性能。

②图解
在这里插入图片描述

优点
速度快,容量大

缺点
无备份,安全差

③举例
一个RAID0列阵有n(≥2)个磁盘,每个磁盘的随机读写的IO能力达到100,
那么,整个磁盘阵列的IO能力就是 :100 * n。
如果传输能力允许,RAID0的吞吐率也是单个磁盘的 n倍。

2. RAID 1

①定义
在容量上, 相当于把两个磁盘合起来一起使用。
互为镜像的两个磁盘里面保存的数据时完全一样的,
因此,在并行读取的速度上将是n个磁盘速度之和,
但是,在写入的速度,就慢的多,因为要同时写入两个磁盘,故,速度就是 n/2。

②图解
在这里插入图片描述

优点
有备份,安全高

缺点
写入慢

3. RAID 3

①图解
在这里插入图片描述

优点
速度快,安全高,奇偶校验,一盘故障数据可重建

适用于视频网站

缺点
二盘同时故障,数据全部丢失
小数据读写不适用,随机读慢

4. RAID 3 + Spare

①图解
在这里插入图片描述

②解析

Spare:(磁盘数 - 2)*单盘容量

热备盘:备份故障盘上的内容

5. RAID 5

①定义

RAID5支持并行IO,而磁盘上的数据呈现条带状的分布在所有的磁盘上,
因此读IO的速度相当于所有磁盘速度之和

前提条件:磁盘没有损坏

写入速度,是所有磁盘速度总和的 1/4
所以RAID5是不适合用在大批量写入数据的系统上。

以下几种情况,建议采用RAID5:

要求较高的空间利用率;
安全性要求不高;
大文件存储系统.

②图解
在这里插入图片描述

③解析

是RAID3的加强版

Spare:(磁盘数 - 1)*单盘容量

热备盘:备份故障盘上的内容

6. RAID 6

①定义

RAID6与RAID5 很类似,差别在于RAID6比RAID5多了一个用于校验的磁盘。
读取IO速度,RAID6 和RAID5 是完全一样。
写入速度,区别RAID6将一个命令分成三次读、三次写,即6次IO命令来完成。

RAID6实际写入磁盘的速度是全部磁盘的1/6

②图解
在这里插入图片描述

③解析

Spare:(磁盘数 - 2)*单盘容量

7. RAID 10

①定义

先镜像后条带,称为RAID10;
先条带后镜像,称为RAID01。

不管是 RAID10还是RAID01,都是组合大于2块磁盘时候的RAID1。

从性能上看, RAID10和RAID01都是一样的,都是RAID1。
区别

RAID10在重建故障磁盘的时候,性能比RAID01要快,安全性要高,不计成本

小数据量频繁写入的系统,推荐采用RAID10。

②图解
在这里插入图片描述

③解析

Spare:(磁盘数 *单盘容量)/2

5、减少IO方式

5.1 系统特性(B/S)

为了能让大家更容易的理解,
我们还是老规矩,上图:
在这里插入图片描述

5.2 存储体系

直接上图,图中解析
在这里插入图片描述

5.3 存储结构演化

直接上图,图中解析
在这里插入图片描述

5.4 优化思路

小鱼之前有些过系列关于性能优化的文章,如:
性能调优怎么做,看过这一篇,菜鸟变大佬
MySQL性能监控及优化
看过这篇《性能分析流程》后,和面试官聊天都有底气了!!!
关于MySQL性能优化方式

那么,为啥还要在唠叨一次呢,
因为小鱼今天把这个做成了图表形式,
更能通俗易懂!!!
也是煞费苦心啊 ~~

图解
在这里插入图片描述

6、总结

如果上面的还是不理解,
别着急,没关系,那就去看看小鱼的系列博文:深聊性能测试,从入门到放弃
保证,不能成为全栈性能测开专家,
也能成为资深测开专家!!

入门篇
深聊性能测试,从入门到放弃之:初识性能测试

提升篇
深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust
深聊性能测试,从入门到放弃之:Locust性能自动化(三)如何提高Locust性能
深聊性能测试,从入门到放弃之:Locust性能自动化(四)自定义客户端测试
深聊性能测试,从入门到放弃之:Locust性能自动化(五)API汇总整理(上)
深聊性能测试,从入门到放弃之:Locust性能自动化(五)API汇总整理(下)
深聊性能测试,从入门到放弃之:Locust性能自动化(七)HAR-files→locustfiles自动转换 :Transformer的使用

优化篇
性能调优怎么做,看过这一篇,菜鸟变大佬
MySQL性能监控(sql命令语句 & MONyog工具)全掌握,这一篇足以!
性能分析流程
关于MySQL性能优化方式
深聊性能测试,从入门到放弃之:如何对IO进行性能调优

实战篇
深聊性能测试,从入门到放弃之:Locust性能自动化(二)代码实战
常见的并发测试框架
接口并发实战之订单并发性能

并发
我这样回答多线程并发,面试官非要跟我做朋友!》
常见的并发问题有哪些都不知道,还怎么说自己是大佬!!
接口并发实战之订单并发性能

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值