Linux IO磁盘篇整理小记( 三 )


。顾名思义,就是系统因为io导致的进程wait 。再深一点讲就是:这时候系统在做IO,导致没有进程在干活,cpu在执行idle进程空转,所以说iowait的产生要满足两个条件,一是进程在等IO,二是等IO时没有进程可运行 。
常用的top命令中也有iowait的指标展示(%wa就是%iowait),示例如下:

Linux IO磁盘篇整理小记

文章插图
 
 
对 iowait 常见的误解有两个:1. 误以为 iowait 表示CPU不能工作的时间;2. 误以为 iowait 表示I/O有瓶颈问题 。
iowait 的首要条件就是CPU空闲,既然空闲当然就可以接受运行任务,只是因为没有进程可以运行,CPU才进入空闲状态的 。那为什么没有进程可以运行呢?因为进程都处于休眠状态、在等待某个特定事件:比如等待定时器、或者来自网络的数据、或者键盘输入、或者等待I/O操作完成,等等 。iowait的升高并不能证明等待IO进程的数量增多了,也不能证明等待IO的总时间增加了 。例如,在CPU繁忙期间发生的I/O,无论IO是多还是少,iowait都不会变;当CPU繁忙程度下降时,有一部分IO落入CPU空闲时间段内,导致iowait升高 。再比如,IO的并发度低,iowait就高;IO的并发度高,iowait可能就比较低 。所以iowait 所含的信息量非常少,它是一个非常模糊的指标,如果看到 iowait 升高,还需检查I/O量有没有明显增加,相应的一些指标有没有明显增大,应用有没有感觉变慢,如果都没有,就没什么好担心的 。
Plus: 可以使用iotop命令来查找引起高iowait对应的进程 。查看CPU使用率及负载的一些命令有:top、vmstat、mpstat、uptime等 。

【Linux IO磁盘篇整理小记】


推荐阅读