我如何判断Linux进程在等待什么?

and*_*ers 19 linux debugging operating-system process

我正在尝试追踪我在Linux下调试的应用程序中的性能瓶颈的原因.所涉及的各种过程似乎要花费大量的时间阻塞I/O请求,我想知道是否有人知道任何Linux的技巧,让你看到为什么一个特定的过程被阻断/什么资源它是在等待什么?/proc例如,有什么用处吗?

Til*_*ill 15

无论是什么过程,你都会top用来检查状态.然后你可以通过桁架或strace运行它.这应该详细说明正在发生的事情.如果不可能,请将其连接到gdb.像iostat这样的工具可能会向您显示正在发生的事情(例如,如果磁盘是瓶颈).


sig*_*ice 8

您可以使用该strace命令查看您的流程是什么.您可能还发现lsof在您的进程上运行以查看它正在使用的文件和套接字是有用的.


sho*_*nex 7

strace是你的朋友,因为你可以花时间进入每个系统调用,另外你可以选择你感兴趣的文件描述符和系统调用.但你也可以从内核获得支持:看看latencytop