如何找出消耗“等待CPU”的进程(即I / O被阻止)

时间:2009-03-20 16:01:00

标签: linux command-line

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

4 个答案:

答案 0 :(得分:58)

在IO上阻止的流程是状态列中标记为D的流程(顶部为S列)。

答案 1 :(得分:39)

更准确地说,使用此命令可以轻松找出哪些进程正在“占用”您的CPU周期:

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

此网址可能会有所帮助:Linux Wait IO Problem

答案 2 :(得分:35)

iotoplatencytop可能会有所帮助。两者都没有给出“由进程引起的CPU等待时间” - 我不确定它是否有意义,因为CPU可以并且确实在等待IO时为其他进程提供服务 - 但这两个工具给出了概述(分别)系统I / O流量和调度延迟。

答案 3 :(得分:3)

执行顶部,然后移动F,然后选择m或n,将按使用的CPU时间对进程列表进行排序。