使用top
可以很容易地找出每个作业使用多少CPU。但是,我想找一个导致高等待CPU的工作。有没有办法找出哪些作业在I / O上被阻止?
答案 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)
iotop和latencytop可能会有所帮助。两者都没有给出“由进程引起的CPU等待时间” - 我不确定它是否有意义,因为CPU可以并且确实在等待IO时为其他进程提供服务 - 但这两个工具给出了概述(分别)系统I / O流量和调度延迟。
答案 3 :(得分:3)
执行顶部,然后移动F,然后选择m或n,将按使用的CPU时间对进程列表进行排序。