如何找出哪个进程正在消耗“等待CPU”(即I / O阻塞)

通过top可以很容易地找出每个作业使用多lessCPU。 但是,我想要寻找导致高等待CPU的工作。 有没有办法找出哪些作业在I / O上被阻塞?

iotop和latencytop可能会有所帮助。 既没有给出“处理器造成的CPU等待时间” – 我不确定它是否有意义,因为CPU可以在等待IO的时候去处理其他进程 – 但是这两个工具给出了(分别)系统I / Ostream量和调度延迟。

IO上阻塞的进程是状态列中标记为D的进程( S列在最上面)。

更确切地说,使用这个命令可以很容易地找出哪些进程正在“吃”你的CPU周期:

while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done

这个url可能会有帮助: Linux等待IO问题

做一个顶部,然后转移F,然后selectm或n,将按CPU使用时间对进程列表进行sorting。