Linux--如何查看磁盘的IO(top、iostat)

问题背景:

  在性能测试时,虽然测试出了结果,但是我们并不知道瓶颈是源端,还是目标端。例如我做上传和下载性能验证,从Linux服务器上向OSS集群上传和下载文件,虽然测试出了速率,但是并不知道上传是否存在瓶颈,瓶颈在Linux服务器上,还是在OSS集群端。所以在上传时就需要观察Linux服务器的CPU、内存、IO,同时监控OSS的bucket的带宽、流量,从而判断性能的瓶颈。

首先 、用top命令查看

  top - 16:15:05 up 6 days,  6:25,  2 users,  load average: 1.45, 1.77, 2.14

  Tasks: 147 total,   1 running, 146 sleeping,   0 stopped,   0 zombie

  Cpu(s):  0.2% us,  0.2% sy,  0.0% ni, 86.9% id, 12.6% wa,  0.0% hi,  0.0% si

  Mem:   4037872k total,  4003648k used,    34224k free,     5512k buffers

  Swap:  7164948k total,   629192k used,  6535756k free,  3511184k cached

查看12.6% wa ,IO等待所占用的CPU时间的百分比,高过30%时IO压力高

其次、 用iostat -x 1 10

如果 iostat 没有,要  yum install sysstat

  avg-cpu:  %user   %nice    %sys   %iowait   %idle

           0.00     0.00     0.25    33.46    66.29

  Device:   rrqm/s  wrqm/s   r/s    w/s    rsec/s   wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   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

  sdb      0.00   1122    17.00   9.00   192.00   9216.00    96.00   4608.00   123.79    137.23   1033.43  13.17   100.10

  sdc      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
iostat结果的相关字段说明如下:

rrqm/s:    每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s:    每秒进行 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
rkB/s:     每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:     每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz:  平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:  平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await:     平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:     平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util:     一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

查看%util 100.10 %idle 66.29

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait。

posted @ 2022-01-28 15:11  业余砖家  阅读(3775)  评论(0编辑  收藏  举报