1
CPU如何知道有待处理的IO?
我一直iowait在研究顶级实用程序输出中显示的属性,如下所示。 top - 07:30:58 up 3:37, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st iowait 一般定义如下: “这是CPU空闲并且有一些IO挂起的时间。” 据我了解,一个进程在单个CPU上运行。由于它已经用尽了时隙而进行了调度,或者由于阻塞而被调度之后,最终可以在任何一个CPU上再次对其进行调度。 在有IO请求的情况下,使进程处于不间断睡眠状态的CPU负责跟踪iowait时间。因为其他CPU确实处于空闲状态,所以它们在结束时将报告与空闲时间相同的时间。这个假设正确吗? 此外,假设有一个较长的IO请求(意味着该进程有几次机会可以调度,但由于IO未完成而没有调度),CPU如何知道有“待处理的IO”?这种信息是从哪里获取的?一个CPU如何简单地找出某个进程已进入休眠状态,以便某个IO完成某个时间,因为任何CPU都可能使该进程进入休眠状态。如何确认“待处理的IO”状态?
17
linux
cpu
top
load-average