磁盘使用率查看iostat命令解析

磁盘使用率查看iostat命令解析

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

iostat –h
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | … } [ <device> […] | ALL ] ]
[ <device> […] | ALL ] [ -p [ <device> [,…] | ALL ] ]

语法
iostat(选项)(参数)
选项
-c:仅显示CPU使用情况;
-d:仅显示设备利用率;
-k:显示状态以千字节每秒为单位,而不使用块每秒;
-m:显示状态以兆字节每秒为单位;
-p:仅显示块设备和所有被使用的其他分区的状态;
-t:显示每个报告产生时的时间;
-V:显示版号并退出;
-x:显示扩展状态。

-N    显示磁盘阵列(LVM)信息
-n    显示NFS 使用情况

参数
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。
实例1
用iostat -x /dev/sda1来观看磁盘I/O的详细情况:

iostat -x /dev/sda1 

Linux 2.6.32-504.16.2.el6.x86_64 (host-)     2018年08月18日     _x86_64_    (64 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
3.55    0.01    1.43    0.00    0.00   95.01

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda1              0.00     0.00    0.03    0.00     0.13     0.00     4.00     0.00    0.78   0.78   0.00

详细说明:第二行是系统信息和监测时间,第三行和第四行显示CPU使用情况(具体内容和mpstat命令相同)。
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。

Device的I/O输出的信息,如下所示
标示    说明
Device    监测设备名称
rrqm/s    每秒需要读取需求的数量
wrqm/s    每秒需要写入需求的数量
r/s     每秒实际读取需求的数量
w/s    每秒实际写入需求的数量
rsec/s    每秒读取区段的数量
wsec/s    每秒写入区段的数量
rkB/s    每秒实际读取的大小,单位为KB
wkB/s    每秒实际写入的大小,单位为KB
avgrq-sz    需求的平均大小区段
avgqu-sz    需求的平均队列长度
await    等待I/O平均的时间(milliseconds)
svctm    I/O需求完成的平均时间
%util    被I/O需求消耗的CPU百分比

备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。

实例2  
iostat -d -k 1 10
参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1表示,数据显示每隔1秒刷新一次。一共统计十次

Linux 2.6.32-504.16.2.el6.x86_64 (host-)     2018年08月18日     _x86_64_    (64 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              34.64         5.12       751.12  412659496 60484078502
dm-1             40.87         0.02       163.46    1221797 13162174268
dm-2              9.73         0.01        38.92     469665 3133764096
dm-5             24.35         0.14        97.38   11560861 7841415860
dm-6              1.92         0.00         7.69      68873  619611252
dm-9              2.90         0.13        11.57   10432045  932056216
dm-8              1.83         0.00         7.34     112561  590833132
dm-3              1.56         0.00         6.24      71701  502570400
dm-4              0.78         0.00         3.11       4057  250112728
dm-0              0.52         0.05         2.08    3890005  167775376
dm-7             12.07         0.01        48.26     775113 3886483236
dm-10             0.25         0.00         1.02       1333   81837584

disk属性值说明:
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。”一次传输”意思是”一次I/O请求”。多个逻辑请求可能会被合并为”一次I/O请求”。”一次传输”请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

例子2中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时统计的磁盘总TPS,下面是各个分区的TPS。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)

指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同。
iostat -d sda 2
默认监控所有的硬盘设备,现在指定只监控sda。

常见用法
iostat -d -k 1 10         #查看TPS和吞吐量信息(磁盘读写速度单位为KB)
iostat -d -m 2            #查看TPS和吞吐量信息(磁盘读写速度单位为MB)
iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

参考:
http://man.linuxde.net/iostat
https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html
https://www.linuxidc.com/Linux/2014-07/104151.htm

此条目发表在LinuxBasic分类目录,贴了标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注