iowait 的含义
内容提要
iowait是CPU的一种状态,表示CPU处于idle状态且有进程在等待IO。iowait高可能表示系统大部分时间在等待IO,IO系统性能不够高。iowait低不能代表进程没有卡在IO上。
延伸解读
iowait 的统计机制与抽样本质
内核定期更新 CPU 状态计数器,每次更新时检查 CPU 是否忙碌。若空闲,则进一步检查该 CPU 之前是否发出过 IO 操作,若有则增加 iowait 计数,否则增加 idle 计数。这种基于时钟中断的抽样统计意味着 iowait 值反映的是采样时刻的状态,而非精确的 IO 等待时间。
iowait 高低的实际含义辨析
高 iowait 表示 CPU 大部分时间空闲且至少有一个进程在等待文件系统 IO,可能意味着 IO 性能不足或 CPU 缺乏可运行任务。但 iowait 低并不代表进程没有卡在 IO 上,因为当有其他计算任务分配给 CPU 时,iowait 会被计算任务覆盖,即使进程仍在等待 IO。
iowait 的覆盖范围与常见误解
iowait 仅包括文件系统的 IO,不包括 sockets、pipes、ttys 以及 select、poll、sleep、pause 等操作。此外,iowait 是 CPU 角度的状态,不是进程角度的状态。一个进程可能大部分时间在等待 IO,但若系统中有其他可运行任务,iowait 可能显示为 0,因此不能仅凭 iowait 判断进程是否阻塞在 IO 上。
Q&A
iowait是什么状态?
iowait是CPU的一种状态,表示CPU处于idle状态且有进程在等待IO。
CPU的状态有哪些?
CPU有四种状态:user, sys, idle, iowait。
高iowait意味着什么?
高iowait意味着CPU大部分时间在等待IO,至少有一个进程在等待IO。
iowait和idle有什么区别?
iowait是idle的一种状态,表示没有Runnable进程且有进程卡在IO上。
iowait低是否意味着没有进程卡在IO上?
iowait低并不代表进程没有卡在IO上,可能是因为有其他计算任务分配给CPU。
如何统计CPU的状态?
Kernel定期更新CPU状态计数器,检查CPU是否busy并更新相应计数。