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

简介: 深聊性能测试,从入门到放弃之:如何对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



目录
相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
580 4
|
12月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
阿里云ESSD Entry云盘是新一代企业级云盘,具备高IOPS、低延迟特性,适合开发与测试场景。它提供10~32,768 GiB容量范围,最大IOPS达6,000,吞吐量150 MB/s,时延1~3 ms。支持按量付费和包年包月,性价比高,特别适合个人开发者和中小企业。详情及价格参考阿里云官网。
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
509 13
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
327 11
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
358 10
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1176 13
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
2056 4
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
780 1