阻塞系统调用出现在 CPU 读数中的什么位置?

阻塞系统调用出现在 CPU 读数中的什么位置?

“top”提供的用户、系统和空闲读数中,哪一个反映了阻塞系统调用所花费的时间?

我读到阻塞磁盘 I/O 调用反映为空闲时间,但阻塞网络 I/O 调用则不然。但那么去哪里呢?

答案1

当代码等待某些事件发生时,不会花费 CPU 时间,因此就像 I/O 一样,阻塞网络系统调用本质上是空闲时间。

答案2

中显示为wait( ) 。这并不反映所涉及的等待时间,而是反映 CPU 处理操作的工作量。watop

如果一个进程要从慢速磁盘读取大文件,内核的调度程序将不得不更频繁地分配 CPU 来处理 I/O 操作,因此也会浪费调度程序的处理时间。

不幸的是,即使是内核开发人员也无法给出更直接的答案,因为真正的等待时间不需要CPU,但处理它却需要CPU。

相关内容