iostat使用心得


iostat用于输出CPU和磁盘I/O相关的统计信息. 
命令格式:

iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ]  ]
[ interval [ count ] ]


-c 仅显示CPU统计信息.与-d选项互斥.
 -d 仅显示磁盘统计信息.与-c选项互斥.
 -k 以K为单位显示每秒的磁盘请求数,默认单位块.
 -p device | ALL
  与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:
  # iostat -p hda
  或显示所有设备
  # iostat -p ALL
 -t    在输出数据时,打印搜集数据的时间.
 -V    打印版本号和帮助信息.
 -x    输出扩展信息.


常用:
iostat -dx 1
iostat



rrqm/s:read request merge将读入请求合并后,每秒发送到设备的读入请求数.读取时等几秒过程中,有多少块是连续的,连续的块将merge一起来读取;这个可以看到业务的关系,是不是连续的读,越大说明越多连续读。
wrqm/s:将写入请求合并后,每秒发送到设备的写入请求数,也能说明业务关系,当该值很大时,说明可以考虑将块划分大一点。
r/s:每秒读取的次数。
w/s:每秒写入的次数。
rkB/s:读取多少kB每秒。    
wkB/s:写入多少kB每秒。
avgrq-sz:average request size 发送到设备的请求的平均大小,单位是扇区,一个扇区一般为512B,16个扇区为8KB。上述就是438*8=3504。 
avgqu-sz:发送到设备的请求的平均队列长度
await:I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒。 
r_await:读的平均耗时。
w_await:写入平均耗时。
svctm:发送到设备的I/O请求的平均执行时间.单位是毫秒。
%util:队列不为空的占比,一定程度可以反映系统是否繁忙。在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率。
Blk_read:读入块的当总数.
Blk_wrtn:写入块的总数.
kB_read/s:每秒从驱动器读入的数据量,单位为K.
kB_wrtn/s:每秒向驱动器写入的数据量,单位为K.
kB_read:读入的数据总量,单位为K.
kB_wrtn:写入的数据总量,单位为K.
rsec/s:每秒从设备读入的扇区数.
wsec/s:每秒向设备写入的扇区数.


await的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。
如果 svctm 比较接近 await,说明I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明 I/O队列太长,应用得到的响应时间变慢,
如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水

 svctm:每次io设备的服务时间(毫秒),它的大小一般和磁盘性能有关:CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加

 %util:处理io操作的cpu比例,如果这个着接近100%,说明io请求非常多,cpu的所有时间都用来处理io请求,io系统负载很大(也有可能cpu资源不足),磁盘可能存在瓶颈;在%util等于70%的时候,io的读取就会有很多等待。




~$ iostat -dx 1
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
zfsds0            0.00     0.00    0.00  438.00     0.00  3504.00    16.00     1.00    4.57    0.00    2.28   2.28 100.00

 

iostat

140215195215332.png

~$ iostat 


第一部分包含了CPU报告
%user : 显示了在执行用户(应用)层时的CPU利用率 %nice : 显示了在以nice优先级运行用户层的CPU利用率 %system : 显示了在执行系统(内核)层时的CPU利用率 %iowait : 显示了CPU在I/O请求挂起时空闲时间的百分比 %steal : 显示了当hypervisor正服务于另外一个虚拟处理器时无意识地等待虚拟CPU所占有的时间百分比。 %idle : 显示了CPU在I/O没有挂起请求时空闲时间的百分比 第二部分包含了设备利用率报告 Device : 列出的/dev 目录下的设备/分区名称 tps : 显示每秒传输给设备的数量。更高的tps意味着处理器更忙。 Blk_read/s : 显示了每秒从设备上读取的块的数量(KB,MB) Blk_wrtn/s : 显示了每秒写入设备上块的数量(KB,MB) Blk_read : 显示所有已读取的块 Blk_wrtn : 显示所有已写入的块

 

 
 
posted @ 2017-05-04 17:29  狂神314  阅读(955)  评论(0编辑  收藏  举报