繁体   English   中英

如何找出哪个进程正在消耗“等待 CPU”(即 I/O 阻塞)

[英]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 问题

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

执行一次 top,然后 shift F,然后选择 m 或 n,将按 CPU 使用时间对进程列表进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM