我知道 IOWait 指标是 CPU 等待 IO 的时间。
据我所知,IOWait 总是指磁盘 io。但为什么会这样呢?为什么网络 IO(可能涉及本地系统上的总线通信和 CPU 的 IO)不会影响 IOWait?
另外,想要读取光盘的进程是否会导致 IOWait?或者 IO 等待是否始终是尝试写入光盘的进程的症状?
答案1
我知道 IOWait 指标是 CPU 等待 IO 的时间。
差不多。IOWait 是 CPU 空闲的时间,因为没有任务准备好运行,并且至少有一个任务因为正在等待 I/O 而未准备好运行。
据我所知,IOWait 总是指磁盘 io。但为什么会这样呢?为什么网络 IO(可能涉及本地系统上的总线通信和 CPU 的 IO)不会影响 IOWait?
它指的是“快速” I/O。这包括磁盘 I/O,但不包括大多数网络 I/O。网络 I/O 确实涉及本地系统上的一些总线通信,但通常涉及等待来自远程系统的内容。因此,它被认为是“慢速” I/O。
这些差异反映在整个系统设计中——例如,等待慢速 I/O 通常是可中断的,而等待快速 I/O 则不可中断。慢速 I/O 提供异步或非阻塞版本,而快速 I/O 则不提供。
另外,想要读取光盘的进程是否会导致 IOWait?或者 IO 等待是否始终是尝试写入光盘的进程的症状?
这两种情况都有可能发生。这种情况在读取时最常见,因为很明显,在 I/O 完成之前,进程无法向前推进。但在写入时也可能会发生这种情况,例如,如果没有足够的 RAM 来缓冲写入。