欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux IO实时监控命令iostat命令学习笔记 博客分类: Linux linuxiostat 

程序员文章站 2024-03-16 19:19:58
...

最近测试一个ftp下载服务相关项目,根据以往经验,与服务器diskio,netio性能有很直接的关系

之前只是听说过iostat命令,今天具体百度了下,学习下iostat命令的详细使用方法

 

参考:http://aofengblog.blog.163.com/blog/static/6317021201331365716412/

感谢傲风大神分享~

 

敲 iostat

 

 

[root@localhost test]# iostat
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.07    0.00    0.00   99.90

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.28         2.12        35.10    2917532   48306386
dm-0              0.41         1.77         2.96    2432042    4074312
dm-1              0.00         0.00         0.00       2576          0
dm-2              4.06         0.35        32.14     476490   44232056

 输入信息中每个信息的意义如下:

cpu的统计信息,如果是多cpu系统,显示的所有cpu的平均统计信息。

  •  %user:用户进程消耗cpu的比例
  • %nice:用户进程优先级调整消耗的cpu比例
  • %sys:系统内核消耗的cpu比例
  • %iowait:等待磁盘io所消耗的cpu比例
  • %idle:闲置cpu的比例(不包括等待磁盘io的s)

 磁盘的统计信息:

  •  Device:设备的名称
  • Tps:设备上每秒的io传输(可能多个io被组成一个io)的次数
  • Blk_read/s:每秒从设备读取block(kernel 2.4以上,block=512byte)的数量
  • Blk_wrtn/s:每秒写到设备block(kernel 2.4以上,block=512byte)的数量
  • Blk_read:间隔时间内,从设备读取总的block数量
  • Blk_wrtn:间隔时间内,写到设备总的block数量

 

 

敲 iostat --help

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

 下边详细探究每个参数的意义

 

-c参数(与-d互斥)

输出CPU统计信息

敲 iostat -c

[root@localhost test]# iostat -c
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.07    0.00    0.00   99.90

 

-d参数(与-c互斥)

输出设备和分区的I/O统计信息

敲 iostat -d

[root@localhost test]# iostat -d
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.28         2.14        37.31    2944012   51377066
dm-0              0.41         1.79         2.96    2458162    4077056
dm-1              0.00         0.00         0.00       2576          0
dm-2              4.34         0.35        34.35     476490   47299992

 

-N参数(不常用)

暂时没搞懂,貌似是显示磁盘分区信息?详细目录?差不多资料,有待研究……

敲 iostat -N

[root@localhost test]# iostat -N
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.07    0.00    0.00   99.90

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.29         2.14        38.17    2949236   52559330
VolGroup-lv_root     0.41         1.79         2.96    2463370    4077976
VolGroup-lv_swap     0.00         0.00         0.00       2576          0
VolGroup-lv_home     4.44         0.35        35.21     476506   48481336

 

-n 参数(不常用)

查看NFS上流量信息

敲 iostat -n

[root@localhost test]# iostat -n
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

Filesystem:              rBlk_nor/s   wBlk_nor/s   rBlk_dir/s   wBlk_dir/s   rBlk_svr/s   wBlk_svr/s     ops/s    rops/s    wops/s

 -h参数(不常用)

可读性更好的NFS目录信息统计

敲 iostat -h

[root@localhost test]# iostat -h
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.07    0.00    0.00   99.90

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.29         2.14        38.90    2949636   53573802
dm-0              0.41         1.79         2.96    2463770    4078784
dm-1              0.00         0.00         0.00       2576          0
dm-2              4.53         0.35        35.93     476506   49495000

 -k -m参数(这个用的多)

-k 用“kbytes/秒”代替“块/秒”显示统计信息

-m 用“mbytes/秒”代替“块/秒”显示统计信息

敲 iostat -k(-m)

[root@localhost test]# iostat -k
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.08    0.00    0.00   99.90

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.29         1.07        19.65    1474994   27071613
dm-0              0.41         0.89         1.48    1232061    2039736
dm-1              0.00         0.00         0.00       1288          0
dm-2              4.59         0.17        18.17     238253   25031868

[root@localhost test]# iostat -m
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2013年12月05日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.08    0.00    0.00   99.90

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               0.29         0.00         0.02       1440      26440
dm-0              0.41         0.00         0.00       1203       1991
dm-1              0.00         0.00         0.00          1          0
dm-2              4.59         0.00         0.02        232      24448

 -t参数(不常用)

显示NFS目录统计信息

敲 iostat -t

[root@localhost nmon_x86_64_rhel4]# iostat -t
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2014Ū07Ղ04ɕ 	_x86_64_	(1 CPU)

2014Ū07Ղ04ɕ 15ʱ22·Ա1ī
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.00    0.29    0.01    0.00   99.66

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.37        33.27        23.62   85820646   60944050
dm-0              0.29         1.02         2.02    2625506    5220000
dm-1              0.00         0.00         0.00       3096          0
dm-2              2.84        32.24        21.60   83183690   55724008

 

-V参数

显示版本号并通出

敲 iostat -V

[root@localhost nmon_x86_64_rhel4]# iostat -V
sysstat °汾 9.0.4
(C) Sebastien Godard (sysstat <at> orange.fr)

 -x参数(这个也用的多)

显示扩展统计信息

敲 iostat -x

[root@localhost nmon_x86_64_rhel4]# iostat -x
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2014Ū07Ղ04ɕ 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.00    0.29    0.01    0.00   99.66

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.01     2.76    0.18    0.19    33.29    23.62   154.05     0.00    1.53   0.66   0.02
dm-0              0.00     0.00    0.04    0.25     1.02     2.02    10.34     0.00    1.33   0.51   0.01
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    2.23   0.78   0.00
dm-2              0.00     0.00    0.14    2.70    32.27    21.60    18.97     0.03   10.26   0.03   0.01

 

每个输出消息含义:

  • rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
  • wrqm/s: 每秒对该设备的写请求被合并次数
  • r/s: 每秒完成的读次数
  • w/s: 每秒完成的写次数
  • rkB/s: 每秒读数据量(kB为单位)
  • wkB/s: 每秒写数据量(kB为单位)
  • avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
  • avgqu-sz: 平均等待处理的IO请求队列长度
  • await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
  • svctm: 平均每次IO请求的处理时间(毫秒为单位)
  • %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

 干介绍有些枯燥

下面列举写常见用法

iostat -d -k 2

 

 

 

kb/s显示磁盘信息,每2s刷新一次

[root@localhost nmon_x86_64_rhel4]# iostat -d -k 2
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2014Ū07Ղ04ɕ 	_x86_64_	(1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.37        16.71        11.81   43115523   30473465
dm-0              0.29         0.51         1.01    1312813    2610764
dm-1              0.00         0.00         0.00       1548          0
dm-2              2.84        16.20        10.80   41796985   27862680

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              20.27      2594.59         0.00       3840          0
dm-0              0.00         0.00         0.00          0          0
dm-1              0.00         0.00         0.00          0          0
dm-2             20.27      2594.59         0.00       3840          0

^C

 

 

iostat -dkx 1 10

 

kb/s显示磁盘统计信息及扩展信息,每1s刷新 ,刷新10次结束

 

[root@localhost nmon_x86_64_rhel4]# iostat -dkx 1 10
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2014Ū07Ղ04ɕ 	_x86_64_	(1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.01     2.76    0.18    0.19    16.85    11.81   154.47     0.00    1.53   0.66   0.02
dm-0              0.00     0.00    0.04    0.25     0.51     1.01    10.34     0.00    1.33   0.51   0.01
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    2.23   0.78   0.00
dm-2              0.00     0.00    0.14    2.70    16.34    10.80    19.11     0.03   10.26   0.03   0.01

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00   36.76    1.47  5158.82     5.88   270.15     0.03    0.77   0.69   2.65
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00   36.76    1.47  5158.82     5.88   270.15     0.03    0.77   0.69   2.65

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00   19.72    0.00  2507.04     0.00   254.29     0.01    0.57   0.50   0.99
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00   19.72    0.00  2507.04     0.00   254.29     0.01    0.57   0.50   0.99

 

就给出了3次刷新数,一样的东西,太长了大家就看着有点乱是吧

 

实例分析

 

 

[root@localhost nmon_x86_64_rhel4]# iostat -d -k 1 10|grep dm-2
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2014Ū07Ղ04ɕ 	_x86_64_	(1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
dm-2              2.84        16.47        10.80   42504905   27863480
dm-2             20.25      1777.22        25.32       1404         20
dm-2              4.88       624.39         0.00        512          0
dm-2              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0
dm-2              5.00       640.00         0.00        512          0
dm-2              0.00         0.00         0.00          0          0
dm-2             10.00       640.00        20.00        512         16
dm-2              0.00         0.00         0.00          0          0
dm-2              2.47       316.05         0.00        256          0

 

上面的数据说明:dm-2分区10s内 每秒传输次数约 4,;每秒磁盘读取约961kb,写入约5.6kb

 

[root@localhost nmon_x86_64_rhel4]# iostat -d -k -x 1 10|grep dm-2
Linux 2.6.32-279.el6.x86_64 (localhost.localdomain) 	2014Ū07Ղ04ɕ 	_x86_64_	(1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
dm-2              0.00     0.00    0.14    2.70    16.54    10.80    19.25     0.03   10.25   0.03   0.01
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    5.06     0.00    20.25     8.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    3.61    0.00   462.65     0.00   256.00     0.00    0.33   0.33   0.12
dm-2              0.00     0.00    2.33    0.00   297.67     0.00   256.00     0.00    0.50   0.50   0.12
dm-2              0.00     0.00    3.90    0.00   498.70     0.00   256.00     0.00    0.33   0.33   0.13
dm-2              0.00     0.00    3.95    0.00   505.26     0.00   256.00     0.00    0.67   0.67   0.26
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    3.57    0.00   457.14     0.00   256.00     0.00    0.33   0.33   0.12

 这里重点看 await  %util

上面数据说明:磁盘平均响应时间约1ms(但是有峰值10ms的存在,建议长时间统计,有待继续观察);磁盘使用率不足1%,磁盘响应正常

由此看来,瓶颈不在磁盘读写上,或者你的压力还不够!

 

个人拙见,有不对的地方,还请大神指教!

 

补充下-x参数个含义分析方法:

参考http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

rsec/s:每秒读取的扇区数;
wsec/:每秒写入的扇区数。
rKB/s:The number of read requests that were issued to the device per second;
wKB/s:The number of write requests that were issued to the device per second;
avgrq-sz 平均请求扇区的大小
avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。    
await:  每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
         这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm    表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,         系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

  

相关标签: linux iostat

推荐阅读