gpt4 book ai didi

linux - vmstat : What exactly does cpu wait mean?

转载 作者:IT王子 更新时间:2023-10-29 01:26:00 26 4
gpt4 key购买 nike

今天我有一个 linux 系统,在 vmstat 等待列中有 100% 等待。

我的问题是:处理器在等待 I/O 时究竟做了什么?

据我了解,CPU 不能真正等待 - 它必须运行一些代码!那么它是否运行了一些严格的“等待磁盘中断到来”代码?为什么当来自磁盘的中断到达时它不运行其他代码并返回?

据我所知,磁盘太慢了,以至于 CPU 可以执行很多很多周期,直到磁盘准备就绪。

为什么 linux 让 cpu 等到 I/O 完成而不是给它一些工作去做?

托马斯

最佳答案

我在这里找到了答案:http://veithen.github.io/2013/11/18/iowait-linux.html

因此,处理器级别的“等待 I/O”意味着:处理器除了等待 I/O 什么都不做。在等待 I/O 时,处理器可以运行用户代码,在这种情况下,等待 I/O 消失并且 CPU% 上升。

这里是链接页面中的测试用例。

只需运行一个在第一个 CPU 上执行大量 I/O 的任务:

taskset 1 dd if=/dev/sda of=/dev/null bs=1MB

您可以看到第一个 CPU 现在正在运行内核代码 (sy) 或等待 I/O (wa):

%Cpu0  :  0.0 us,  2.9 sy,  0.0 ni,  0.0 id, 97.1 wa,  0.0 hi,  0.0 si,  0.0 st

现在我们在同一个 cpu 上开始一个紧密的 cpu 循环:

taskset 1 sh -c "while true; do true; done"

然后 - 看看 - I/O 等待消失了,因为 CPU 现在除了等待 I/O 之外还有其他事情要做 - 它运行用户态代码!

%Cpu0  : 91.3 us,  1.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  7.3 si,  0.0 st

希望对其他人有所帮助!

问候,

托马斯

关于linux - vmstat : What exactly does cpu wait mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com