[英]How to find out which process is consuming “wait CPU” (i.e. I/O blocked)
使用top
很容易找出每个作业使用多少 CPU。 但是,我想寻找一个导致高等待 CPU 的工作。 有没有办法找出哪些作业在 I/O 上被阻止?
在 IO 上阻止的进程是在状态列中标记为D
的进程(顶部的S
列)。
更准确地说,使用这个命令可以很容易地找出哪些进程正在“吃掉”你的 CPU 周期:
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
这个 url 可能会有所帮助: Linux 等待 IO 问题
iotop和latencytop可能会有所帮助。 两者都没有给出确切的“由进程引起的 CPU 等待时间”——我不确定它是否有意义,因为 CPU 可以并且确实在等待 IO 时关闭 go 以服务其他进程——但这两个工具提供了(分别)系统 I/O 流量和调度延迟。
执行一次 top,然后 shift F,然后选择 m 或 n,将按 CPU 使用时间对进程列表进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.