Linux IO实时监控命令iostat命令学习笔记 博客分类: Linux linuxiostat
最近测试一个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%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
上一篇: Bash把一个时间戳转化成日期 bashtimestampdate时间戳
下一篇: linux vmstat - Report virtual memory statistics 博客分类: Linux linuxvmstatiostatsar
推荐阅读
-
Linux IO实时监控命令iostat命令学习笔记 博客分类: Linux linuxiostat
-
《Linux命令行与shell脚本编程大全》 第十章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 内联输入重定向方括号退出状态码bcexpr
-
《Linux命令行与shell脚本编程大全》 第七章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 fdiskfsck物理卷卷组逻辑卷
-
《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 psqlmysql
-
《Linux命令行与shell脚本编程大全》 第八章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 aptitudedpkgyumurpmzypper
-
《Linux命令行与shell脚本编程大全》 第二十一章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 gawk变量数组内建函数自定义函数
-
《Linux命令行与shell脚本编程大全》 第八章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 aptitudedpkgyumurpmzypper
-
《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 psqlmysql
-
《Linux命令行与shell脚本编程大全》 第十七章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 selectdialogkdialogzenity图形界面
-
《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 dashzshzmodloadautoloadzcompile