如何判断 Linux 进程正在等待啥?
Posted
技术标签:
【中文标题】如何判断 Linux 进程正在等待啥?【英文标题】:How do I tell what a Linux process is waiting for?如何判断 Linux 进程正在等待什么? 【发布时间】:2010-10-22 13:03:08 【问题描述】:我正在尝试找出我在 Linux 下调试的应用程序出现性能瓶颈的原因。所涉及的各种进程似乎花费大量时间阻塞 I/O 请求,我想知道是否有人知道任何 Linux 技巧可以让您了解为什么特定进程被阻塞/它是什么资源等待?比如/proc
有什么有用的吗?
【问题讨论】:
【参考方案1】:无论是什么进程,你都使用top
来检查状态。然后你可以通过truss or strace 运行它。那应该详细说明正在发生的事情。如果这不可行,请将 it 连接到 gdb。像iostat 这样的工具可能会向您展示正在发生的一般情况(例如,如果磁盘是瓶颈)。
【讨论】:
【参考方案2】:您可以使用strace
命令查看您的进程在做什么。您可能还会发现在您的进程上运行lsof
以查看它正在使用哪些文件和套接字很有用。
【讨论】:
【参考方案3】:strace 是你的朋友,因为你可以得到每个系统调用所花费的时间,另外你可以选择你感兴趣的文件描述符和系统调用。但你也可以得到内核的支持:看看@ 987654321@
【讨论】:
链接已过时以上是关于如何判断 Linux 进程正在等待啥?的主要内容,如果未能解决你的问题,请参考以下文章
linux 性能优化之路: 什么是平均负载, 如何判断是哪种负载过高(cpu密集, io密集, 大量进程)
linux 性能优化之路: 什么是平均负载, 如何判断是哪种负载过高(cpu密集, io密集, 大量进程)