如何判断 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密集, 大量进程)

C#winform 有关判断进程的问题

vmstat - cpu 没有完全忙,但有等待进程。这是啥意思?

linux下 用啥命令查看进程?如何杀死进程?

查看系统负载情况