磁盘使用率查看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