通过top
它可以很容易地找出每个作业使用多少CPU.但是,我想找一个导致高等待CPU的工作.有没有办法找出哪些作业在I/O上被阻止?
在IO上阻止的进程是D
在状态列(S
顶部的列)中标记的进程.
更准确地说,使用此命令可以轻松找出哪些进程正在"占用"您的CPU周期:
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
这个网址可能会有所帮助:Linux等待IO问题
iotop和latencytop可能会有所帮助.两者都没有给出"由进程引起的CPU等待时间" - 我不确定它是否有意义,因为CPU可以并且确实在等待IO时为其他进程提供服务 - 但这两个工具给出了概述(分别)系统I/O流量和调度延迟.