linux-磁盘io性能指标!

news/2025/1/11 11:24:59/

一. 引文:

    平时查看或者监控磁盘io时,基本上都是用的现成的工具/脚本, 对其了解的还是很浅,特参考一些资料整理了下,留个随笔。

二.磁盘I/O性能指标:

磁盘 I/O 是 Unix/Linux 系统管理中一个非常重要的组成部分。磁盘 I/O 性能监控的指标主要包括:

 1:每秒 I/O 数(IOPS 或 tps)

对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。

 2:吞吐量(Throughput)

指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为 Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。

3:平均 I/O 数据尺寸

平均 I/O 数据尺寸为吞吐量除以 I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均 I/O 数据尺寸小于 32K,可认为磁盘使用模式以随机存取为主;如果平均每次 I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。

 4:磁盘活动时间百分比(Utilization)

磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就 是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过 70%,应用进程将花费较长的时间等待 I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。

5:服务时间(Service Time)

指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过 20ms,一般可考虑会对上层应用产生影响。

6:I/O 等待队列长度(Queue Length)

指待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的 I/O 等待队列长度。

7:等待时间(Wait Time)

指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果 I/O 请求持续超出磁盘处理能力,意味着来不及处理的 I/O 请求不得不在队列中等待较长时间。

在工作当中通过监控以上指标,将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合 CPU、内存、交换分区的使用状况,不难发现磁盘 I/O 潜在或已经出现的问题。

三. I/O性能分析常用工具:

 Linux 下比较常用的磁盘 I/O 性能监控的命令有两个:iostat 和 sar个人一般使用iostat命令,这里就简单解说下iostat。

执行情况如下:

# iostat -d -x 1 2
Linux 2.6.18-308.24.1.el5 (YZSJHL22-160.opi.com)        04/08/2016Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.00    29.00  1.00 42.00    16.00   568.00    13.58     0.64   14.79   0.95   4.10
vda1              0.00     2.00  1.00  5.00    16.00    56.00    12.00     0.09   14.83   4.17   2.50
vda3              0.00    27.00  0.00 37.00     0.00   512.00    13.84     0.55   14.78   0.86   3.20Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.00    25.00  1.00  5.00     8.00   240.00    41.33     0.06    9.17   4.50   2.70
vda1              0.00    25.00  0.00  5.00     0.00   240.00    48.00     0.04    8.60   3.00   1.50
vda3              0.00     0.00  1.00  0.00     8.00     0.00     8.00     0.01   12.00  12.00   1.20

参数解析:

rrqm/s  将读入请求合并(当系统调用需要读取数据的时候,VFS(虚拟文件系统)将请求发到各个FS(文件系统),如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并[merge])后,每秒发送到设备的读入请求数.

wrqm/将写入请求合并后,每秒发送到设备的写入请求数.

r/s 每秒读操作数(不包含rrqm)

w/s   每秒写操作数(不包含wrqm)

rsec/s   每秒从设备读取的扇区数量。

wsec/s  每秒向设备写入的扇区数量.

avgrq-sz  I/O 请求的平均扇区数。

avgqu-sz I/O 请求的平均队列长度。

await   I/O 请求的平均等待时间,单位为毫秒

svctm   I/O 请求的平均服务时间,单位为毫秒。

%util 处理 I/O 请求所占用的时间的百分比,即设备利用率。s

 CPU统计信息参数解读

%user:用户进程使用的CPU使用率百分比

%nice:nice操作所使用的CPU的百分比

%system:系统进程使用的CPU使用率百分比

%iowait :系统输出数据至磁盘时空闲的CPU时间百分比(即IO等待)

%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比

%idle:系统没有任何数据输出至磁盘的CPU时间百分比(即空闲时间)

事实上iostat工具是用过获取/proc/diskstats内容通过计算后显示的磁盘io各种性能指标,/proc/diskstats内容如下:

# cat /proc/diskstats 1       0 ram0 0 0 0 0 0 0 0 0 0 0 01       1 ram1 0 0 0 0 0 0 0 0 0 0 01       2 ram2 0 0 0 0 0 0 0 0 0 0 01       3 ram3 0 0 0 0 0 0 0 0 0 0 01       4 ram4 0 0 0 0 0 0 0 0 0 0 01       5 ram5 0 0 0 0 0 0 0 0 0 0 01       6 ram6 0 0 0 0 0 0 0 0 0 0 01       7 ram7 0 0 0 0 0 0 0 0 0 0 01       8 ram8 0 0 0 0 0 0 0 0 0 0 01       9 ram9 0 0 0 0 0 0 0 0 0 0 01      10 ram10 0 0 0 0 0 0 0 0 0 0 01      11 ram11 0 0 0 0 0 0 0 0 0 0 01      12 ram12 0 0 0 0 0 0 0 0 0 0 01      13 ram13 0 0 0 0 0 0 0 0 0 0 01      14 ram14 0 0 0 0 0 0 0 0 0 0 01      15 ram15 0 0 0 0 0 0 0 0 0 0 07       0 loop0 0 0 0 0 0 0 0 0 0 0 07       1 loop1 0 0 0 0 0 0 0 0 0 0 07       2 loop2 0 0 0 0 0 0 0 0 0 0 07       3 loop3 0 0 0 0 0 0 0 0 0 0 07       4 loop4 0 0 0 0 0 0 0 0 0 0 07       5 loop5 0 0 0 0 0 0 0 0 0 0 07       6 loop6 0 0 0 0 0 0 0 0 0 0 07       7 loop7 0 0 0 0 0 0 0 0 0 0 08       0 sda 31895 7090 918412 24115 3211106 4864266 64625416 5931100 0 3079303 59556228       1 sda1 30169 6665 899298 23208 3054517 4693860 62008352 5731069 0 2995256 57546708       2 sda2 328 30 2864 172 0 0 0 0 0 171 1728       3 sda3 1229 394 14890 661 156589 170406 2617064 200031 0 97750 200706

见上面命令中红下划线标注部分,前三列分别代理注设备号,次设备号和设备名称(下面还有相关分区的信息),后面11列说明如下:
 1. 读磁盘的次数,成功完成读的总次数。

 2. 合并后读完成次数(为了效率可能会合并相邻的读和写。从而两次4K的读在它最终被处理到磁盘上之前可能会变成一次8K的读,因此只有一次I/O操作。这个域使你知道这样的操作有多频繁)。

 3. 读扇区的次数,成功读过的扇区总次数(一个扇区512bytes,可以统计读的数据大小)。

 4读花费的毫秒数,这是所有读操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。

 5. 写完成次数,成功写完成的总次数。

 6. 合并写完成次数

7. 写扇区次数,成功写扇区总次数。

8. 写操作花费的毫秒数,这是所有写操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。

9. 正在处理的输入/输出请求数-I/O的当前进度,只有这个域应该是0。当请求被交给适当的request_queue_t时增加和请求完成时减小。

10. 输入/输出操作花费的毫秒数,这个域会增长只要field 9不为0。

11.  输入/输出操作花费的加权毫秒数, 花在I/O操作上的毫秒数,在每次I/O开始,I/O结束,I/O合并时这个域都会增加。这可以给I/O完成时间和存储那些可以累积的提供一个便利的测量标准。

 如不使用iostat查看io性能, 可自行通过/proc/diskstats查看(思路:当前值-上一秒值=每秒的值)


http://www.ppmy.cn/news/1562219.html

相关文章

ClickHouse 教程

ClickHouse 是一个开源的列式数据库管理系统(DBMS),专门用于在线分析处理(OLAP)。它能够以极高的速度处理大量数据,适用于实时分析和大数据场景。以下是一个简单的 ClickHouse 教程,帮助你快速入…

基于32单片机的智能语音家居

一、主要功能介绍 以STM32F103C8T6单片机为控制核心,设计一款智能远程家电控制系统,该系统能实现如下功能: 1、可通过语音命令控制照明灯、空调、加热器、窗户及窗帘的开关; 2、可通过手机显示和控制照明灯、空调、窗户及窗帘的开…

以人工智能为驱动力,促进教师数字化教学设计能力发展

摘要 随着信息技术的迅猛发展和教育改革的深化,数字化教学已成为教育领域的重要趋势。本研究聚焦于教师的数字化教学设计能力,探讨以人工智能为驱动力如何有效促进其发展。通过文献综述、案例分析和实证研究,本研究发现:人工智能技术的引入不仅丰富了教师的教学设计手段,…

Web前端基础知识(七)

要在JS中获取元素节点&#xff0c;需要使用DOM API提供的方法。 innerHTML&#xff1a;不仅会返回一个纯文本&#xff0c;还可以解析一下这个文本中的语意。 innerText: 忽略HTML标记。 举例&#xff1a; <body> <div id"box1">这是一个ID选择器标签…

明源地产ERP VisitorWeb_XMLHTTP.aspx Sql注入漏洞复现(附脚本)

0x01 产品描述: ‌明源地产ERP系统‌是一款专为房地产行业设计的企业资源规划系统,旨在打通企业各个部门之间的信息壁垒,实现资源优化配置,提高运营效率。该系统集房源、客源、销售、财务、人力资源等功能于一身,满足房地产企业在多个环节的精细化管理需求‌0x02 漏洞描述…

【PyCharm】PyCharm CE免费版下载

Mac系统 官网下载地址&#xff1a; https://www.jetbrains.com/pycharm/download/?sectionmac Win系统 官网下载地址&#xff1a; https://www.jetbrains.com/pycharm/download/?sectionwindows 下载说明 上方的是专业版&#xff0c;所以我们要选择底部的PyCharm Commun…

2025低代码与人工智能AI新篇

在当今数字化浪潮汹涌澎湃的时代&#xff0c;低代码开发与人工智能&#xff08;AI&#xff09;犹如两颗璀璨的星辰&#xff0c;正逐渐交汇融合&#xff0c;为企业解锁前所未有的智能业务解决方案。今天&#xff0c;咱们就深入探讨一下低代码平台是如何集成 AI 技术&#xff0c;…

初学stm32 --- 单通道ADC过采样

如何用过采样和求均值的方式提高ADC的分辨率&#xff1f; &#xff08;1&#xff09;如何确定过采样率 根据要增加的分辨率位数计算过采样频率方程&#xff1a; fos 是过采样频率&#xff0c;w是希望增加的分辨率位数&#xff0c;fs 是初始采样频率要求 方程推导过程&#x…