您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页Linux iostat指标判断系统io问题

Linux iostat指标判断系统io问题

来源:爱问旅游网

iostat

iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然,这些指标实际上来自 /proc/diskstats。

rhel6

[root@oracle11g ~]# iostat -mdx 2
Linux 2.6.32-2.el6.x86_ (oracle11g)         07/28/2020      _x86__        (1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda              12.09     2.63   19.66    1.48     0.38     0.02    38.24     0.01    0.41    0.30    1.92   0.30   0.
scd0              0.00     0.00    0.26    0.00     0.00     0.00     8.00     0.00    3.52    3.52    0.00   3.52   0.09
dm-0              0.00     0.00   21.67    4.09     0.35     0.02    28.76     0.03    1.03    0.70    2.79   0.22   0.56
dm-1              0.00     0.00    2.24    0.00     0.01     0.00     8.00     0.00    0.34    0.34    0.00   0.12   0.03

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda             138.38     0.00  215.15    0.00     5.15     0.00    49.00     0.08    0.37    0.37    0.00   0.36   7.78
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00  357.07    0.00     5.15     0.00    29.52     0.17    0.49    0.49    0.00   0.22   7.78
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    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   0.00   0.00

rrqm/s:每秒这个设备相关的读取请求有多少被merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同BLock的数据,FS会将这个请求合并merge)
wrqm/s:每秒这个设备相关的写入请求有多少被merge了。每秒进行merge写操作数据,即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/O设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rMB/s:每秒读M(K)字节数。是rsect/s的一半,因为每个扇区大小为512字节。(需要计算)
wMB/s:每秒写M(K)字节数。是wsect/s的一半(需要计算)
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000 。(因为aveq的单位为毫秒)
await:每一个IO请求的处理的平均时间(Linux上单位为毫秒)。这里可以理解为IO的响应时间,一般的系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,他们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm:端到端的IO请求平均服务时间,表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于avctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

%util:一秒中多百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。即delta(use)/s/1000(因为use的单位为毫秒)。如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈,idle小于70%压力就较大了。一般读取速度有较多的wait。
iostat中IO平均响应时间await,平均服务响应时长svctm,svctm一般在5ms左右,svctm大一般是存储的问题,否则是主机的问题。如果await远大于svctm,优先怀疑主机业务异常或链路端口达到上限,如果awati和svctm差不多大,优先怀疑存储性能能力不够。

rhel7

[root@postgre ~]$iostat -mdx 2
Linux 3.10.0-957.el7.x86_ (postgre)   07/28/2020      _x86__        (2 CPU)

Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wMB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dMB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
dm-0             0.01      0.00     0.00   0.00    1.32    20.    0.07      0.00     0.00   0.00    2.56     4.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00
sda              0.68      0.03     0.04   5.68    0.60    48.90    3.72      0.13     2.17  36.87    0.86    34.69    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.20
scd0             0.00      0.00     0.00   0.00   19.39    57.11    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00


Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wMB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dMB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
dm-0             0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00
sda              0.00      0.00     0.00   0.00    0.00     0.00    3.00      0.07     2.00  40.00    1.17    22.67    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.20
scd0             0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00


Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wMB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dMB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
dm-0             0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00
sda              0.00      0.00     0.00   0.00    0.00     0.00    3.00      0.07     2.00  40.00    0.50    22.67    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.10
scd0             0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00

[root@postgre ~]$iostat
Linux 3.10.0-957.el7.x86_ (postgre)   07/28/2020      _x86__        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.19    0.04    0.00   99.74

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
dm-0              0.08         0.11         0.30         0.00       2608       6768          0
sda               4.39        32.91       128.98         0.00     749998    2939829          0
scd0              0.00         0.05         0.00         0.00       1028          0          0

kB_read/s:每秒从设备(drive expressed)读取的数据量
kB_wrtn/s:每秒从设备(drive expressed)写入的数据量
kB_read:读取的总数据量
kB_wrtn:写入的总数据量;这些单位都是Kilobytes,即KB

查看具体进程的IO消耗情况:pidstat

[root@postgre ~]$pidstat -d 1
Linux 3.10.0-957.el7.x86_ (postgre)   07/30/2020      _x86__        (2 CPU)

09:33:18 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
09:33:19 AM  1000      7344      0.00    105.88      0.00       0  dmserver

09:33:19 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
09:33:20 AM     0         1    879.21      0.00      0.00       0  systemd
09:33:20 AM     0      6794      0.00      3.96      0.00       0  auditd
09:33:20 AM  1000      7344      0.00    106.93      0.00       0  dmserver

09:33:20 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
09:33:21 AM  1000      7344      0.00    108.00      0.00       0  dmserver

09:33:21 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
09:33:22 AM  1000      7344      0.00    108.00      0.00       0  dmserver
^C

Average:      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
Average:        0         1    220.35      0.00      0.00       0  systemd
Average:        0      6794      0.00      0.99      0.00       0  auditd
Average:     1000      7344      0.00    107.20      0.00       0  dmserver

用户 ID(UID)和进程 ID(PID) 。
每秒读取的数据大小(kB_rd/s) ,单位是 KB。
每秒发出的写请求数据大小(kB_wr/s) ,单位是 KB。
每秒取消的写请求数据大小(kB_ccwr/s) ,单位是 KB。
块 I/O 延迟(iodelay),包括等待同步块 I/O 和换入块 I/O 结束的时间,单位是时钟周期。

总结

这些指标中,你要注意:%util ,就是我们前面提到的磁盘 I/O 使用率;r/s+ w/s ,就是 IOPS;rkB/s+wkB/s ,就是吞吐量;r_await+w_await ,就是响应时间。在观测指标时,也别忘了结合请求的大小( rareq-sz 和 wareq-sz)一起分析。你可能注意到,从 iostat 并不能直接得到磁盘饱和度。事实上,饱和度通常也没有其他简单的观测方法,不过,你可以把观测到的,平均请求队列长度或者读写请求完成的等待时间,跟基准测试的结果(比如通过 fio)进行对比,综合评估磁盘的饱和情况。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务