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

时间:2009-04-29 09:31:26

标签: linux debugging operating-system process

我正在尝试追踪我在Linux下调试的应用程序中的性能瓶颈的原因。涉及的各种流程似乎花了很多时间来阻止I / O请求,我想知道是否有人知道任何Linux技巧让你看到为什么特定进程被阻止/它是什么资源等待?例如/proc中有什么用处吗?

3 个答案:

答案 0 :(得分:14)

无论是什么过程,都可以使用top来检查状态。然后你可以通过truss or strace运行它。这应该详细说明正在发生的事情。如果无法做到这一点,请将 it 挂钩到gdb。像iostat这样的工具可能会向您显示正在发生的事情(例如,如果磁盘是瓶颈)。

答案 1 :(得分:8)

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

答案 2 :(得分:7)

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