我一直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
Run Code Online (Sandbox Code Playgroud)
iowait
一般定义如下:
“这是 CPU 空闲且有一些 IO 待处理的时间。”
我的理解是一个进程在单个 CPU 上运行。在它因为已用完时隙或被阻塞而被取消调度后,它最终可以再次在任何一个 CPU 上再次调度。
在 IO 请求的情况下,将进程置于不间断睡眠状态的 CPU 负责跟踪iowait
时间。其他 CPU 将报告与它们的空闲时间相同的时间,因为它们确实处于空闲状态。这个假设正确吗?
此外,假设有一个很长的 IO 请求(意味着进程有几次被调度的机会,但由于 IO 未完成而没有被调度),CPU 怎么知道有“待处理的 IO”?这种信息是从哪里获取的?CPU 怎么能简单地发现某个进程在一段时间内进入睡眠状态以完成 IO,因为任何 CPU 都可以使该进程进入睡眠状态。“待处理 IO”的状态是如何确认的?
我最近意识到 RPM 软件包几年前从 gzip 压缩转变为 xz 压缩。我需要检查我拥有的 RPM 包的压缩类型。我还需要检查我的系统在尝试解压 RPM 文件时考虑的压缩类型。