Windows“iowait”CPU利用率报告

Yol*_*iem 9 windows perfmon io iowait iostat

Windows 是否以与 Linux 相同的方式计算和报告“ iowait”?也就是说,进程进入“不间断睡眠”,他们花费的时间从“CPU空闲”中减去?

如果是这样,哪些 Perfmon 计数器适合检测“由于延迟服务 IO 而导致 CPU 繁忙”而不是“由于计算导致 CPU 繁忙”?

the*_*bit 10

Windows 内核中的一些概念与 Linux 中的概念有很大不同,这就是您iowait在 Perfmon中看不到计数器的原因。

首先,Windows 中调度的实体是一个线程,而不是一个进程。一个进程只是一个包含 1+ 个线程的容器。此外,Windows 没有为其线程定义不可中断的睡眠状态(更准确地说,所有 I/O 请求都可以被中断——例如被同一进程的另一个线程),因此iowait在 Windows 平台上不会有一个确切的对应项。Windows 将其线程等待同步 I/O 的时间报告为“空闲”,因为线程一发出同步 I/O 请求就由调度程序简单地进行上下文切换。

如果您对特定设备上 I/O 操作花费的总时间感兴趣,您应该查看与延迟相关的计数器以及这段时间内处理的各个请求的数量。但是,这不允许您以同步与异步访问模式对其进行分解。