iostat工具

常用参数如下

参数

说明

-c

显示CPU使用情况。

-d

显示磁盘使用情况。

-k

以KB为单位显示。

-m

以M为单位显示。

-p

显示磁盘单个的情况。

-t

显示时间戳。

-x

显示详细信息。

 

命令:

iostat -dctxm 1 60 /dev/sda

 1 iostat -dctxm 1 60 /dev/sda
 2 02/10/2022 10:12:41 AM
 3 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
 4           10.97    0.93   11.66    3.78    0.00   72.67
 5 
 6 Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
 7 sda           1367.68 2740.63     18.83     45.18   157.34  1294.27  10.32  32.08    1.23    0.78   2.97    14.10    16.88   0.19  77.88
 8 
 9 02/10/2022 10:12:42 AM
10 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
11            8.89    0.00    4.69    0.33    0.00   86.09
12 
13 Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
14 sda             23.00  163.00      0.09      1.08     0.00     0.00   0.00   0.00    0.13    0.09   0.00     4.17     6.80   0.77  14.30

 

参数含义如下:

参数

说明

rrqm/s

每秒合并放入请求队列的读操作数。

wrqm/s

每秒合并放入请求队列的写操作数。

r/s

每秒磁盘实际完成的读I/O设备次数。

w/s

每秒磁盘实际完成的写I/O设备次数。

rkB/s

每秒从磁盘读取KB数。

wkB/s

每秒写入磁盘的KB数。

avgrq-sz

平均请求数据大小,单位为扇区(512B)。

avgqu-sz

平均I/O队列长度(操作请求数)。

await

平均每次设备I/O操作的等待时间(毫秒)。

svctm

平均每次设备I/O操作的响应时间(毫秒)。

%util

用于I/O操作时间的百分比,即使用率。

 

注意:util=100%时,对于机器硬盘来说几乎已经到达瓶颈,但是对于多通道的ssd,nvme来说不一定就意味着已经到达磁盘瓶颈。

 

重要参数详解:

  1. rrqm/s和wrqm/s,每秒合并后的读或写的次数(合并请求后,可以增加对磁盘的批处理,对HDD还可以减少寻址时间)。如果值在统计周期内为非零,也可以看出数据的读或写操作的是连续的,反之则是随机的。
  2. 如果%util接近100%(即使用率为百分百),说明产生的I/O请求太多,I/O系统已经满负荷,相应的await也会增加,CPU的wait时间百分比也会增加(通过TOP命令查看),这时很明显就是磁盘成了瓶颈,拖累整个系统。这时可以考虑更换更高性的能磁盘,或优化软件以减少对磁盘的依赖。
  3. await(读写请求的平均等待时长)需要结合svctm 参考。svctm的和磁盘性能直接有关,它是磁盘内部处理的时长。await的大小一般取决于svctm以及I/O队列的长度和。svctm一般会小于await,如果svctm比较接近await,说明I/O几乎没有等待时间(处理时间也会被算作等待的一部分时间);如果wait大于svctm,差的过高的话一定是磁盘本身IO的问题;这时可以考虑更换更快的磁盘,或优化应用。
  4. 队列长度(avgqu-sz)也可作为衡量系统I/O负荷的指标,但是要多统计一段时间后查看,因为有时候只是一个峰值过高。

注意:

上一篇:前端两个方法按顺序执行


下一篇:Swift async await 使用介绍