如何判断Linux进程正在等待什么?

如何判断Linux进程正在等待什么?,linux,debugging,operating-system,process,Linux,Debugging,Operating System,Process,我正试图找出在Linux下调试的应用程序中出现性能瓶颈的原因。所涉及的各种进程似乎在阻塞I/O请求上花费了大量时间,我想知道是否有人知道任何Linux技巧可以让您了解为什么某个进程被阻塞/它在等待什么资源?例如,在/proc中有什么有用的东西吗?您可以使用strace命令来查看您的流程在做什么。您可能还会发现,在流程上运行lsof,查看它正在使用哪些文件和套接字也很有用 无论是什么进程,都可以使用top检查状态。然后你就可以完成了。这应该详细说明发生了什么。如果不可能,请将其连接到。像这样的工具

我正试图找出在Linux下调试的应用程序中出现性能瓶颈的原因。所涉及的各种进程似乎在阻塞I/O请求上花费了大量时间,我想知道是否有人知道任何Linux技巧可以让您了解为什么某个进程被阻塞/它在等待什么资源?例如,在
/proc
中有什么有用的东西吗?

您可以使用
strace
命令来查看您的流程在做什么。您可能还会发现,在流程上运行
lsof
,查看它正在使用哪些文件和套接字也很有用

无论是什么进程,都可以使用
top
检查状态。然后你就可以完成了。这应该详细说明发生了什么。如果不可能,请将其连接到。像这样的工具可能会向您大致显示正在进行的操作(例如,如果磁盘出现瓶颈)。

strace是您的朋友,因为您可以获得每次系统调用所花费的时间,此外,您还可以选择感兴趣的文件描述符和系统调用。但您也可以从内核获得支持:看看链接是否过时