linux iowait

linux iowait

linux iowait理解



iowait

iowait = CPU 空闲,但进程在等待 I/O 完成的时间占比
通俗理解:
1 CPU 并没有在做计算
2 但因为某个进程在等磁盘/flash/网络 I/O 完成
3 内核认为 CPU 是 “idle(空闲)但处于 I/O 等待状态”

所以 iowait 属于 空闲的一种情况,不是 CPU 忙。



CPU使用率: 100% - iowait - idle
100% - idle,应该称作什么? 系统busy率?

CPU 负载通常指 平均负载(Load Average),表示系统中有多少任务正在或等待运行;不是百分比,而是一个绝对值



cpu busy

Linux CPU 时间来自 /proc/stat:
user
system
nice
idle
iowait
irq
softirq
steal

真正CPU Busy = user + system + irq + softirq + nice
(也可以写成 100 − idle − iowait)

CPU 不是忙:idle、iowait
idle = 真空闲
iowait = 在等 I/O,也算空闲



iowait 高的原因(最常见)

1 磁盘写入太慢(常见在 eMMC、SD、机械盘)
2 多个进程同时访问磁盘(dd、日志、大量 sync)
3 随机写入太多、小 block size 导致 IOPS 爆掉
4 filesystem flush / journal 写入阻塞
5 cgroup I/O 限制或设备驱动队列过小
6 内核把 dirty page 写盘速度跟不上写入速度

reference:
如何理解 iowait:https://blog.csdn.net/fengye_csdn/article/details/124092138



posted @ 2022-10-26 10:30  王阳开  阅读(29)  评论(0)    收藏  举报