我正在尝试追踪我在Linux下调试的应用程序中的性能瓶颈的原因。涉及的各种流程似乎花了很多时间来阻止I / O请求,我想知道是否有人知道任何Linux技巧让你看到为什么特定进程被阻止/它是什么资源等待?例如/proc
中有什么用处吗?
答案 0 :(得分:14)
无论是什么过程,都可以使用top
来检查状态。然后你可以通过truss or strace运行它。这应该详细说明正在发生的事情。如果无法做到这一点,请将 it 挂钩到gdb。像iostat这样的工具可能会向您显示正在发生的事情(例如,如果磁盘是瓶颈)。
答案 1 :(得分:8)
您可以使用strace
命令查看您的流程是什么。您可能还发现在进程上运行lsof
以查看它正在使用的文件和套接字是很有用的。
答案 2 :(得分:7)
strace是你的朋友,因为你可以花时间进入每个系统调用,另外你可以选择你感兴趣的文件描述符和系统调用。但是你也可以从内核获得支持:看看{ {3}}