日期:2014-05-16  浏览次数:20932 次

等待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时间