linux-磁盘io性能指标!

一. 引文:

    平时查看或者监控磁盘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.mzph.cn/web/65682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel 技巧08 - 如何计算某类(比如红色背景色)单元格的总和? (★)

本文讲了如何在Excel中计算某类(比如红色背景色)单元格的总和。 1,如何计算某类(比如红色背景色)单元格的总和? 技巧就是先把它们给标记出来,然后就好统计了。 那么如何找出来呢? 对,就是通过红色。 按下Ctrl F 点…

awr报告无法生成:常见分析手段

awr报告无法生成:常见分析手段 STATISTICS_LEVEL和OPEN_MODEAWR快照是否能自动生成?AWR快照能否手动生成?日志有无ORA-12751或ORA-32701报错?MMON进程是否被挂起?排查数据库隐藏参数分析快照生成错误信息分析AWR Snapshot Tracing分析AWR Table Flush是否超时STATISTICS_L…

uni-app无限级树形组件简单实现

因为项目一些数据需要树形展示&#xff0c;但是官网组件没有。现在简单封装一个组件在app中使用&#xff0c;可以无线嵌套&#xff0c;展开&#xff0c;收缩&#xff0c;获取子节点数据等。 简单效果 组件TreeData <template><view class"tree"><te…

互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅

本文将给出关于互联网架构演进的一个不同视角。回顾一下互联网的核心理论基础产生的背景&#xff1a; 左边是典型的集中控制通信网络&#xff0c;很容易被摧毁&#xff0c;而右边的网络则没有单点问题&#xff0c;换句话说它很难被全部摧毁&#xff0c;与此同时&#xff0c;分…

移远BC28_opencpu方案_pin脚分配

先上图&#xff0c;BC28模块的pin脚如图所示&#xff1a; 下面看看GPIO的复用管脚 然后我自己整理了一份完整的pin功能列表

Eureka缓存机制

一、Eureka的CAP特性 Eureka是一个AP系统&#xff0c;它优先保证可用性&#xff08;A&#xff09;和分区容错性&#xff08;P&#xff09;&#xff0c;而不保证强一致性&#xff08;C&#xff09;。这种设计使得Eureka在分布式系统中能够应对各种故障和分区情况&#xff0c;保…

2025年第三届“华数杯”国际赛A题解题思路与代码(Python版)

游泳竞技策略优化模型代码详解 第一题&#xff1a;速度优化模型 在这一部分&#xff0c;我们将详细解析如何通过数学建模来优化游泳运动员在不同距离比赛中的速度分配策略。 1. 模型概述 我们的模型主要包含三个核心文件&#xff1a; speed_optimization.py: 速度优化的核…

micro-app【微前端系列教程】禁用样式隔离

全局禁用样式隔离 所有应用的样式隔离都会停止 import microApp from micro-zoe/micro-appmicroApp.start({disableScopecss: true, // 默认值false })指定子应用取消禁用样式隔离 <micro-app namexx urlxx disableScopecssfalse></micro-app>指定子应用禁用样式…

深度学习笔记11-优化器对比实验(Tensorflow)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 一、导入数据并检查 二、配置数据集 三、数据可视化 四、构建模型 五、训练模型 六、模型对比评估 七、总结 一、导入数据并检查 import pathlib,…

FFmpeg Muxer HLS

使用FFmpeg命令来研究它对HLS协议的支持程度是最好的方法&#xff1a; ffmpeg -h muxerhls Muxer HLS Muxer hls [Apple HTTP Live Streaming]:Common extensions: m3u8.Default video codec: h264.Default audio codec: aac.Default subtitle codec: webvtt. 这里面告诉我…

Apache和PHP:构建动态网站的黄金组合

在当今的互联网世界&#xff0c;网站已经成为了企业、个人和机构展示自己、与用户互动的重要平台。而在这些动态网站的背后&#xff0c;Apache和PHP无疑是最受开发者青睐的技术组合之一。这一组合提供了高效、灵活且可扩展的解决方案&#xff0c;帮助您快速搭建出强大的网站&am…

git相关操作笔记

git相关操作笔记 1. git init git init 是一个 Git 命令&#xff0c;用于初始化一个新的 Git 仓库。执行该命令后&#xff0c;Git 会在当前目录创建一个 .git 子目录&#xff0c;这是 Git 用来存储所有版本控制信息的地方。 使用方法如下&#xff1a; &#xff08;1&#xff…

Docker Desktop 构建java8基础镜像jdk安装配置失效解决

Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像&#xff0c;前几天我使用Docker Desktop环境重新构建了一个…

VUE + pdfh5 实现pdf 预览,主要用来uniappH5实现嵌套预览PDF

1. 安装依赖 npm install pdfh5 2. pdfh5 预览(移动端&#xff0c;h5) npm install pdfh5 , &#xff08;会报错&#xff0c;需要其他依赖&#xff0c;不能直接用提示的语句直接npm下载&#xff0c;依旧会报错&#xff0c;npm报错&#xff1a;These dependencies were not fou…

Node.js——fs(文件系统)模块

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

Microsoft Azure Cosmos DB:全球分布式、多模型数据库服务

目录 前言1. Azure Cosmos DB 简介1.1 什么是 Azure Cosmos DB&#xff1f;1.2 核心技术特点 2. 数据模型与 API 支持2.1 文档存储&#xff08;Document Store&#xff09;2.2 图数据库&#xff08;Graph DBMS&#xff09;2.3 键值存储&#xff08;Key-Value Store&#xff09;…

springboot项目读取resources目录下文件

要用以下这种方式读取 classPathResource new ClassPathResource("template/test.docx");不能用以下这种获取绝对路径的方式&#xff0c;idea调试正常&#xff0c;但是部署window和linux的目录结构不一样&#xff0c;部署后会找不到文件&#xff0c;另外window直接…

Ruby语言的软件开发工具

Ruby语言的软件开发工具概述 引言 Ruby是一种简单且功能强大的编程语言&#xff0c;它以优雅的语法和灵活性而闻名。自1995年首次发布以来&#xff0c;Ruby已经被广泛应用于各种开发领域&#xff0c;特别是Web开发。随着Ruby语言的普及&#xff0c;相关的开发工具也日益丰富。…

C++例程:使用I/O模拟IIC接口(6)

完整的STM32F405代码工程I2C驱动源代码跟踪 一&#xff09;myiic.c #include "myiic.h" #include "delay.h" #include "stm32f4xx_rcc.h" //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphCl…

CNN-BiLSTM-Attention模型详解及应用分析

CNN-BiLSTM-Attention结构 CNN-BiLSTM-Attention结构是一种强大的深度学习架构,巧妙地结合了三种不同的技术优势:卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)和注意力机制(Attention)。这种创新性的组合使得模型能够在处理复杂序列数据时表现出色,尤其适用于自然…