linux - 系统范围的连续 Linux 库分析

标签 linux profiling

假设我想分析系统中许多应用程序中使用的单个库的使用情况。我只接受统计资料,而不是准确的资料(但那也不错)。

我不想做的是重新编译每个正在运行的程序并提供分析支持。我希望定期或按需将分析信息转储到某个文件中。如果使用应用程序名称或 pid 来分割统计信息,那就太好了。

现在有什么办法可以实现这一目标吗?

示例用法:使用正在运行的系统中的数据分析 glib 库。

最佳答案

看看oprofile 。我认为它完全符合您的要求。

Oprofile 使用硬件计数器采样来分析代码,您可以自定义要在哪个计数器上采样(例如,如果您不需要时间配置文件,则可以在浮点上采样指令计数器并查看代码中执行最多 FP 工作的部分)。对于时间配置文件,速率约为每秒 2000 个样本,因此开销非常低。

生成的摘要数据会告诉您您花费大部分时间的应用程序、加载模块和符号(如果您有符号信息)。您还可以选择分别分析内核空间和用户空间,并且如果需要,可以使用调用路径信息。最新版本的 oprofile 甚至支持分析 JIT 代码,因此它非常全面。

关于linux - 系统范围的连续 Linux 库分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/764246/

相关文章:

c++ - 对 `main' 的 undefined reference ,当 main 存在时

regex - 使用awk和regex搜索两行之间的文本

c - 如何测量 Visual Studio 中 C 程序的函数堆栈大小?

linux - 如何准确衡量性能,排除后台程序干扰?

c++ - 如何从 oprofile 输出中获取调用堆栈?

linux - 如何为我的linux系统下的每个人设置环境变量?

c - 是否有 Linux 系统调用提供自特定日期以来的秒数?

c++ - VS 代码 "command": "make" differs from command line `make` in terminal window

java - JProfiler - 未检测到不同用户运行的jvm

Java 分析 : detect which piece of code causes high CPU load