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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 深聊性能测试,从入门到放弃之:如何对IO进行性能调优(一)

1、引言


性能这块,虽然是小鱼一直不想去触碰的地方,

但是,身在江湖漂,哪能不带刀!!


小屌丝:鱼哥,最近你得注意身体啊

小鱼:昂… 怎么突然关心起我来了?

小屌丝:还用我说嘛,最近你博文更新的慢,不是在耍妹子,就是在去耍妹子的路上。

小鱼:( ‵o′)凸…我这是在忙工作的事情

小屌丝:我差点信了!!

小鱼:…算了,我不替自己解释了, 我替IO解释吧!

小屌丝:难道,今天要整IO? 那赶紧!


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

然后在慢慢的认识IO


2、 硬盘知识


2.1 磁盘原理

1、定义

①盘片以每分钟数千转到上万转的速度在高速旋转,15K 10k 7.5k 5.2k RPM

②磁头就能对盘片上的指定位置进行数据的读写操作

③磁头磁化磁盘记录数据


2、图片

image.png

image.png


3、HDD示意图

image.png


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操作的次数


图片解析

image.png

计算公式


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等待队列中所花费的等待时间。


②图片解析

image.png


3、IO监控


3.1 windows系统

我们可以直接使用windows自带的监控器

在电脑打开 “性能监视器”,既可看到想看的…


image.png

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


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 流程图

image.png


3.4 磁盘性能分析

定义

1、Physical Disk : % Disk Time


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


3、Memory :Page Reads/sec


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


列表展示

image.png


名词解析

①PR

Memery Page Reads/sec


②Q

Physical Disk Avg.Disk Queue Length


③DT

Physical Disk Time


④L

Low

⑤H

High



相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2月前
|
缓存 运维 Linux
Linux系统调优详解(十二)——IO调优之磁盘测速
Linux系统调优详解(十二)——IO调优之磁盘测速
76 1
|
2月前
|
网络协议 安全 测试技术
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
82 2
|
2月前
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
124 4
|
2月前
|
JavaScript 前端开发 算法
性能测试与调优
性能测试与调优
66 0
|
7月前
|
JSON 测试技术 API
『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程
『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程
112 3
|
2月前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
93 0
|
24天前
|
测试技术 Python
|
2月前
|
运维 Linux
Linux系统调优详解(五)——磁盘IO状态查看命令
Linux系统调优详解(五)——磁盘IO状态查看命令
80 5
|
1月前
|
Web App开发 IDE 测试技术
使用Selenium进行自动化测试:从入门到实践
【6月更文挑战第1天】本文介绍了使用Selenium进行自动化测试的基础知识,包括Selenium工具集的三大组件:WebDriver、IDE和Grid。Selenium支持多种浏览器和编程语言接口。文中详细阐述了安装配置过程,如安装浏览器驱动和Selenium库,并提供了一个Python示例,演示如何初始化WebDriver、打开网页、操作元素及关闭浏览器。此外,文章指出Selenium可扩展实现更复杂测试,可与其他测试框架结合以提升测试效率。
|
1月前
|
开发框架 Java Maven
后端开发之SpringBootWeb入门介绍及简单测试 2024详解
后端开发之SpringBootWeb入门介绍及简单测试 2024详解
22 0