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

有帮助吗?

解决方案

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

其他提示

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

strace是你的朋友,因为你可以花时间进入每个系统调用,另外你可以选择你感兴趣的文件描述符和系统调用。但你也可以从内核获得支持:看看< a href =“http://www.latencytop.org/”rel =“noreferrer”> latencytop

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top