![详细的每进程分析](https://linux22.com/image/24177/%E8%AF%A6%E7%BB%86%E7%9A%84%E6%AF%8F%E8%BF%9B%E7%A8%8B%E5%88%86%E6%9E%90.png)
我正在寻找一种方法来分析单个进程,包括 CPU、I/O、一段时间内的内存使用情况以及可选的系统调用所花费的时间。
我已经知道callgrind
提供一些基本的分析功能,但仅提供调试信息,并且缺乏大多数其他提到的信息。
我知道strace -c
提供有关所有系统调用及其所需 CPU 时间的摘要。
我知道几个与 IO 相关的工具,例如(io)top
、iostat
,vmstat
但它们都缺乏有关单个进程的详细统计信息。它还/proc/$PID/io
提供了一些有关单个进程的 IO 统计信息,但我必须以固定的时间间隔读取它,以便随着时间的推移收集 IO 信息。
我知道pidstat
提供 CPU 负载、IO 统计数据和内存利用率,但不提供系统调用,仅以高粒度提供,而不是随着时间的推移。
当然,人们可以结合使用所描述的几种工具来随着时间的推移收集这些信息,但缺乏高粒度,因此会丢失重要信息。我正在寻找的是一个单一的工具,可以提供所有(或至少大部分)提到的信息,最好是随着时间的推移。存在这样的工具吗?
答案1
与此同时,我编写了自己的程序 -奥德里亚- 能够监控一个或多个进程的资源使用情况,包括当前/平均CPU使用情况、虚拟内存使用情况、IO负载等信息。
答案2
你有没有尝试过远程任务监控器.com?您可以选择单个进程或线程,然后捕获一段时间内的 CPU 使用情况。它将为您生成 cpu 和内存使用情况图。
另一种选择可能是cpuprofiler.com。但这样一来,您的 CPU 数据就会存储在云端,您可以从 Web 浏览器登录来查看 CPU 报告。
答案3
奥剖面,大多数发行版存储库中提供的软件包,使用 CPU 的硬件性能计数器提供可选的每个进程或系统范围的事件和进程分析。