Linux IO iostat 细说

简介:

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

语法: iostat --h
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ]
[ [ -H ] -g <用户组名> ] [ -p [ <设备> [,...] | ALL ] ]
[ <设备> [...] | ALL ]

使用demo:

iostat -d -k 2
参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。

显示结果:
Linux 5.11.0-41-generic:     12/14/2021     _x86_64_    (40 CPU)
Devicetps kB_read/skB_wrtn/s kB_dscd/s kB_readkB_wrtnkB_dscd
sda227.70 4262.35 2759.770.002193818741420444960
sdb159.5517801.7664828.760.009162515123336718104

 0

sda163.68282.59  3512.440.00568  7060 0
sdb  51.7426461.690.000.00531880 0

   输出含义:

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。

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

上面的显示中,可以看到磁盘sda/sdb 以及它的各个分区的统计数据,当时统计的磁盘总TPS是sda/227,sdb/159.55 等。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)

指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同。

也可以指定监控的设备名称为sdab,该命令的输出结果完全上面展示相同

iostat -d sdb 2

Linux 5.11.0-41-generic   12/14/2021     _x86_64_    (40 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
sdb             160.66     17997.22     65146.12         0.00  948420268 3433079520          0


Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
sdb             240.50     28164.00     89744.00         0.00      56328     179488          0

-x 参数

iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据

ostat -d -x -k 1 10
Devicer/srkB/srrqm/s%rrqmr_await rareq-szw/swkB/swrqm/s%wrqmw_await wareq-szd/sdkB/s  drqm/s %drqmd_awaitdareq-sz aqu-sz %util
 
sda58.12 4168.68 4.46 7.12 0.6171.722740.4910.946.150.1616.400.000.000.000.000.00  0.00  0.06 6.06
sdb

 35.35                                      

18047.645.8914.27  98.38    125.54 125.5465210.19433.911.70519.44  0.000.00  0.000.00 0.00  0.003.6916.44

输出信息的含义

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%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
另外 await 的参数也要多和 svctm 来参考。差的过高就一定有 IO 的问题。
avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,才IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的。

-c 参数

iostat还可以用来获取cpu部分状态值

iostat -c 1 5

Linux 5.11.0-41-generic     12/14/2021     _x86_64_    (40 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
             83.64         0.00          5.06             0.24                 0.00         11.06

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              65.61      0.00     3.89       0.03       0.00   30.47

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
             72.16      0.00     4.40       0.03       0.00       23.42

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
            55.63      0.00     3.64         0.03       0.00      40.71

常见用法

iostat -d -k 1 5    #查看TPS和吞吐量信息(磁盘读写速度单位为KB)

iostat -d -m 2 #查看TPS和吞吐量信息(磁盘读写速度单位为MB)

iostat -d -x -k 1 5 #查看设备使用率(%util)、

响应时间(await) iostat -c 1 10 #查看cpu状态

Linux 5.11.0-41-generic     12/14/2021     _x86_64_    (40 CPU)

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
sda             56.62   4052.05     4.32   7.09    0.61    71.56  163.88   2699.39    10.59   6.07    0.16    16.47    0.00      0.00     0.00   0.00    0.00     0.00    0.06   5.97
sdb             36.44  18594.40     5.78  13.68   93.77   510.22  127.00  65962.90   434.61  77.39    1.71   519.39    0.00      0.00     0.00   0.00    0.00     0.00    3.63  17.10


Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %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      0.00     0.00   0.00    0.00     0.00    0.00   0.00
sdb             56.00  28672.00     0.00   0.00    5.46   512.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.30  15.20


Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %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      0.00     0.00   0.00    0.00     0.00    0.00   0.00
sdb             55.00  27652.00     0.00   0.00   10.13   502.76  303.00 162080.00  1335.00  81.50    0.51   534.92    0.00      0.00     0.00   0.00    0.00     0.00    0.71  30.40

可以看到磁盘的平均响应时间>=5.78,磁盘使用率< 30.40。磁盘block合并大了,但是已经很繁忙了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值