ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IO队列长度监控脚本(以及iostat命令详解)

2022-04-22 23:33:47  阅读:220  来源: 互联网

标签:CentOs 0.00 iostat 每秒 详解 IO 磁盘 CPU


 

 

一、磁盘说明

磁盘在系统中负责存储和读取任务,磁盘的处理速度直接影响到了计算机的速度。

 

二、监控目的

随时掌握IO的使用情况,防止IO瓶颈

 

三、监控指标

IO队列长度

IO ps(每秒可以读写多少次)

磁盘吞吐量

 

四、监控命令

1、iostat命令

iostat 主要用于输出磁盘IO 和 CPU的统计信息。

iostat属于sysstat软件包。可以用yum install sysstat 直接安装

(1)用法:iostat [选项] [<时间间隔>] [<次数>]

 

选项:

-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况

 

 

[root@CentOs shell]# iostat
Linux 3.10.0-1160.59.1.el7.x86_64 (CentOs)     2022年04月22日     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.05    0.00    0.00   99.92

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.39         7.11         4.14     305295     177914
dm-0              0.40         6.35         4.09     272947     175825
dm-1              0.00         0.05         0.00       2204          0

[root@CentOs shell]#

 

(2)cpu属性值说明:

%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。

备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

 

disk属性值说明:

磁盘名称
device:磁盘名称
tps:每秒钟发送到的I/O请求数.
kB_read/s:每秒从驱动器(磁盘)读入的数据量,单位是K
kB_wrtn/s:每秒从驱动器(磁盘)写入的数据量,单位是K
kB_read:读入的数据总量.
kB_wrtn:写入的数据总量.

 

 

[root@CentOs shell]# iostat -x
Linux 3.10.0-1160.59.1.el7.x86_64 (CentOs)     2022年04月22日     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.05    0.00    0.00   99.92

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.02    0.22    0.17     7.12     4.15    57.35     0.00    0.87    0.81    0.94   0.38   0.02
dm-0              0.00     0.00    0.20    0.20     6.37     4.10    52.37     0.00    0.91    0.85    0.97   0.37   0.01
dm-1              0.00     0.00    0.00    0.00     0.05     0.00    50.09     0.00    0.17    0.17    0.00   0.09   0.00


rrqm/s:将读入请求合并后,每秒发送到设备的读入请求数.

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

r/s:每秒发送到设备的读入请求数.

w/s:每秒发送到设备的写入请求数.

rsec/s:每秒从设备读入的扇区数.

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

rkB/s:每秒从设备读入的数据量,单位为K.

wkB/s:每秒向设备写入的数据量,单位为K.

avgrq-sz:发送到设备的请求的平均大小,单位是扇区.

avgqu-sz:发送到设备的请求的平均队列长度.

await:I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.

svctm:发送到设备的I/O请求的平均执行时间.单位是毫秒.

%util:在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.
当这个值接近100%时,表示设备带宽已经占满.

2、iozone命令

 

 

五、脚本应用场景:

磁盘使用率监控一般周期为小时、天,不会太频繁。

监控平台+监控脚本

计划任务+监控脚本

手动监控

六、解决问题

及时掌握磁盘容量,防止100%造成磁盘无法读取。

 

 

七、监控命令

 

[root@CentOs shell]# cat io_status.sh
#!/bin/bash

#磁盘io监控 明确知晓HD的使用情况
#监控指标 IO队列长度 IOPS 吞吐量

#监控命令: iostat    iozone


#iostat命令

io(){
  device_num=`iostat -x |egrep "^sd[a-z]"|wc -l`
  iostat -x 1 3|egrep "^sd[a-z]"|tail -n +$((device_num))|awk '{io_long[$1]+=$9}END{for (i in io_long)print io_long[i],i}'

}


#阈值如何判断   2-3已经很大了(我们一般是不会写循环的,此处是为了实验需要!)
while true
do
    io
    sleep 5
done
[root@CentOs shell]#

我们一般可以做个测试,重新开启一个终端,运行这个命令:dd if=/dev/zero of=/tmp/bigfile bs=1M count=3000

 

[root@CentOs shell]# dd if=/dev/zero of=/tmp/bigfile bs=1M count=3000
记录了3000+0 的读入
记录了3000+0 的写出
3145728000字节(3.1 GB)已复制,12.5831 秒,250 MB/秒
[root@CentOs shell]# rm -rf /tmp/bigfile
[root@CentOs shell]#

 

 

 

我们发现,刚开始还不明显,新开终端运行了命令之后数值就上量了!

 

标签:CentOs,0.00,iostat,每秒,详解,IO,磁盘,CPU
来源: https://www.cnblogs.com/zypdbk/p/16180964.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有