2009-04-29 157 views
17

我正试图追查我在Linux下正在调试的应用程序中的性能瓶颈原因。所涉及的各种过程似乎花费了大量时间阻止I/O请求,并且我想知道是否有人知道任何可以让您看到为什么特定进程被阻止/它正在等待的资源的Linux技巧?例如,/proc有什么用?如何判断Linux进程正在等待什么?

回答

13

无论它是什么过程,您都使用top来检查状态。然后你可以运行它通过truss or strace。这应该详细说明发生了什么。如果这是不可能的,请拨直至gdb。像iostat这样的工具可能会告诉你一般情况如何(例如,如果磁盘是瓶颈的话)。

7

您可以使用strace命令查看您的过程要做什么。您也可能发现在您的进程上运行lsof以查看它正在使用的文件和套接字是非常有用的。

6

strace是你的朋友,因为你可以花费在每个系统调用中的时间,再加上你可以选择你感兴趣的文件描述符和系统调用。但你也可以从内核获得支持:看看latencytop