iostat命令详解

iostat介绍

iostat用于输出CPU和磁盘I/O相关的统计信息,便于分析Linux系统性能问题.
命令格式:

shell> iostat --help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]
[ <设备> [...] | ALL ] [ -p [ <设备> [,...] | ALL ] ]

基本使用

shell> iostat
Linux 2.6.32-220.el6.i686 (rac1)     2015年03月19日     _i686_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.06    0.00    0.78    0.54    0.00   98.61

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.04         0.31         0.00        376          0
sda               4.78       311.94        26.94     379676      32794
dm-0             23.54       304.08        26.91     370106      32752
dm-1              0.26         2.12         0.00       2576          0

各个输出项目的含义如下:
avg-cpu段:
%user: 在用户级别运行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%idle: CPU空闲时间的百分比.

Device段:
tps: 每秒钟发送到的I/O请求数,多个逻辑请求可能会被合并为一次I/O请求,一次I/O请求的大小是未知的。
Blk_read/s: 每秒从设备读取的block数. 
Blk_wrtn/s: 每秒向设备写入的block数.
Blk_read:   读入的block总数.
Blk_wrtn:  写入的block总数.

iostat参 数说明

iostat各个参数说明:

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

-x 参数

iostat -d -x -k 1 5
Linux 2.6.32-220.el6.i686 (rac1)     2015年03月19日     _i686_    (4 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
scd0              0.00     0.00    0.02    0.00     0.09     0.00     8.00     0.00    0.64   0.64   0.00
sda              13.73     2.25    5.28    0.45   120.31    10.79    45.73     0.04    7.49   3.52   2.02
dm-0              0.00     0.00   18.42    2.69   118.01    10.77    12.20     0.18    8.45   0.96   2.02
dm-1              0.00     0.00    0.15    0.00     0.62     0.00     8.00     0.00    2.10   1.42   0.02


rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的
读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)。
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒从设备读取的扇区数。
wsec/:每秒向设备写入的扇区数。
r/s:  每秒发送到设备的读入请求数。
w/s:  每秒发送到设备的写入请求数。
rkB/s:每秒从设备读入的数据量,单位为K.
wkB/s:每秒向设备写入的数据量,单位为K.
avgrq-sz: 发送到设备的请求的平均大小,单位是扇区.
avgqu-sz: 发送到设备的请求的平均队列长度.
await :每一个IO请求的处理的平均时间.包括发送请求和执行的时间.单位是毫秒,这里可以理解为IO的响应时间,
        一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了
svctm : 发送到设备的I/O请求的平均执行时间.单位是毫秒.
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,
那么该设备的%util = 0.8/1 = 80%,所以该参数显示设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷
运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

iostat示 例

shell> iostat -d -k 2 10         #查看TPS和吞吐量信息, 每隔2秒,总共输出10次.
shell> iostat  -d -x -k 1 10     #查看设备使用率(%util)、响应时间(await)
shell> iostat -c 1 10            #查看cpu状态
shell> iostat -p sda 2 6         #每隔2秒显示一次sda及上面所有分区的统计信息,共输出6次.

参考:
http://huoding.com/2011/07/13/91
http://www.orczhou.com/index.php/2010/03/iostat-detail/
http://blog.csdn.net/zhangjay/article/details/6656771

整理自网络

Svoid
2015-03-19

你可能感兴趣的:(Linux)