![阻塞系统调用出现在 CPU 读数中的什么位置?](https://linux22.com/image/109902/%E9%98%BB%E5%A1%9E%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E5%87%BA%E7%8E%B0%E5%9C%A8%20CPU%20%E8%AF%BB%E6%95%B0%E4%B8%AD%E7%9A%84%E4%BB%80%E4%B9%88%E4%BD%8D%E7%BD%AE%EF%BC%9F.png)
“top”提供的用户、系统和空闲读数中,哪一个反映了阻塞系统调用所花费的时间?
我读到阻塞磁盘 I/O 调用反映为空闲时间,但阻塞网络 I/O 调用则不然。但那么去哪里呢?
答案1
当代码等待某些事件发生时,不会花费 CPU 时间,因此就像 I/O 一样,阻塞网络系统调用本质上是空闲时间。
答案2
中显示为wait
( ) 。这并不反映所涉及的等待时间,而是反映 CPU 处理操作的工作量。wa
top
如果一个进程要从慢速磁盘读取大文件,内核的调度程序将不得不更频繁地分配 CPU 来处理 I/O 操作,因此也会浪费调度程序的处理时间。
不幸的是,即使是内核开发人员也无法给出更直接的答案,因为真正的等待时间不需要CPU,但处理它却需要CPU。