等待IO时,进程是不是一定被切换到 "等待IO"的状态上去
其实是两个问题:
1. 首先,"处于'等待IO'状态下的进程,是不耗CPU的",这个说法没错吧?
然后,一个进程在等待IO(网络的、磁盘的)的时候,是否一定会被切换到 进程"等待IO"的状态上去?
如果是的话,岂不是所有等待IO的进程都是不耗费CPU的了?
2. 还有, top、mpstat、dstat、iostat等命令中的IOWAIT那一列的准确含义,不清楚。
man手册的解释是:
show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.
我试验过,IOWATI高时,idle是低的,他们俩是"互斥"的关系。那就是说,IOWAIT这列的值,就是进程在IO上耗费的CPU时间了?
我就不明白了,为什么一个进程等待IO的时候还会耗费CPU呢?IOWAIT含义到底是什么?
[解决办法]
1. 首先,"处于'等待IO'状态下的进程,是不耗CPU的",这个说法没错吧? 错
2. 我认为 wait 是指CPU 检测IO时间