# iostat
iostat用于输出CPU和磁盘I/O相关的统计信息. ---用于报告中央处理器统计信息
# iostat
Linux 2.6.32-431.el6.x86_64 (vm4.cluster.com) 09/17/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.59 0.00 0.67 0.89 0.00 97.84
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.94 57.33 22.14 1714948 662300
scd0 0.00 0.09 0.00 2560 0
说明:
avg-cpu段:
%user: 在用户级别运行所使用的CPU的百分比;
%nice: nice操作所使用的CPU的百分比;
%sys: 在系统级别(kernel)运行所使用CPU的百分比;
%iowait: CPU等待硬件I/O时,所占用CPU百分比;
%idle: CPU空闲时间的百分比;
Device段:
tps:每秒钟发送到的I/O请求数;
Blk_read /s:每秒读取的block数;
Blk_wrtn/s:每秒写入的block数;
Blk_read:读入的block总数;
Blk_wrtn:写入的block总数;
----------------------------------------------
iostat命令的参数说明
-c:仅显示 CPU 统计信息。与 -d 选项互斥。
-d:仅显示磁盘统计信息。与 -c 选项互斥。
-k:以 KB为单位显示每秒的磁盘请求数,默认单位块。
-m:以MB为单位显示每秒的磁盘请求数。
-N:显示磁盘阵列信息
-n:显示网络文件系统NFS报告。此选项仅适用于Linux内核2.6.17以上版本。
-p device | ALL
与 -x 选项互斥,用于显示块设备及系统分区的统计信息,也可以在 -p 后指定一个设备名,如:
# iostat -p hda
或显示所有设备:
# iostat -p ALL
-t 在输出数据时,打印收集数据的时间。
-V 打印版本号和帮助信息。
-x 输出扩展信息。
iostat 2 ----每两秒显示所有的分区IO状态
# iostat /dev/sda* 2 ----每两秒显示所有分区的io状态
# iostat -dx 5
# iostat -kx -d sda 2 3
----查看sda的IO状态报告,每两秒打印一次,总共三次 ; -k是表示把默认以每秒多少块显示成每次多少KB;-x打印了一些扩展选项
说明:
rrqm/s:每秒的读请求数 ---每秒需要读取需求的数量
wrqm/s:每秒的写请求数 ---每秒需要写入需求的数量
r/s:每秒完成多少个读IO ---每秒实际读取需求的数量
w/s:每秒完成多少个写IO <-- IOPS=(r/s+w/s) ---每秒实际写入需求的数量
rsec/s:每秒读取了多少扇区的数据。 一个扇区=512字节数据 ---每秒读取区段的数量
wsec/s:每秒写了多少扇区的数据。 ---每秒写入区段的数量
rkB/s:每秒读了多少kb数据 ---每秒实际读取的大小,单位为KB
wkB/s:每秒写了多少kb数据 ---每秒实际写入的大小,单位为KB
avgrq-sz:平均请求数据的大小 ---需求的平均大小区段
avgqu-sz:是平均请求队列的长度。毫无疑问,队列长度越短越好。 ---需求的平均队列长度
await:平均完成IO需要等待多少时间, 包含服务时间,还有在队列中等待的时间。 ---等待I/O平均的时间(milliseconds)
svctm:服务时间,从IO请求产生到,完成IO的时间。从源代码里可以看出: ---I/O需求完成的平均时间
(r/s+w/s)*(svctm/1000)=util。
举例子:如果util达到100%,那么此时svctm=1000/(r/s+w/s),
假设IOPS是1000,那么svctm大概在1毫秒左右,如果长时间大于这个数值,
说明系统出了问题。
不过前面已经说过在磁盘阵列等多盘系统中util可能出现偏大的情况,所以svctm相应的也可
能偏大。
%util:磁盘带宽使用百分比。如果一直都是100%,说明磁盘很忙。 ---被I/O需求消耗的CPU百分比