【发布时间】:2009-03-20 16:01:00
【问题描述】:
使用top,很容易找出每个作业使用多少 CPU。但是,我想寻找一个导致高等待 CPU 的工作。有没有办法找出哪些作业在 I/O 上被阻止?
【问题讨论】:
标签: linux command-line
使用top,很容易找出每个作业使用多少 CPU。但是,我想寻找一个导致高等待 CPU 的工作。有没有办法找出哪些作业在 I/O 上被阻止?
【问题讨论】:
标签: linux command-line
iotop 和 latencytop 可能会有所帮助。两者都没有给出确切的“由进程引起的 CPU 等待时间”——我不确定它是否有意义,因为 CPU 可以并且确实在等待 IO 时为其他进程提供服务——但这两个工具概述了(分别)系统 I/O 流量和调度延迟。
【讨论】:
执行一次 top,然后 shift F ,然后选择 m 或 n,将按 CPU 使用时间对进程列表进行排序。
【讨论】:
在 IO 上阻塞的进程是状态列中标记为D 的进程(顶部为S 列)。
【讨论】:
更准确地说,使用这个命令可以很容易地找出哪些进程正在“吃掉”你的 CPU 周期:
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
此网址可能会有所帮助:Linux Wait IO Problem
【讨论】: