假设我想要分析单个库的使用情况,该库在系统中的许多应用程序中使用。我可以只有一个统计资料,不是一个准确的(但那个也会很好)。
我不想做的是重新编译每个支持性能分析的运行程序。我想要定期或按需将分析信息转储到某个文件。如果使用应用程序名称或pids来分解统计数据,那将是非常好的。
现在有什么方法可以做到这一点吗?
示例用法:使用来自正在运行的系统的数据分析glib库。
发布于 2009-04-18 21:34:11
看看oprofile吧。我认为它做的正是你想要的。
Oprofile使用硬件计数器采样来分析代码,您可以自定义要在哪个计数器上采样(例如,如果您不想要时间配置文件,您可以在浮点指令计数器上采样,并查看执行最多FP工作的代码部分)。对于时间配置文件,速率为每秒约2000个样本,因此开销非常低。
生成的摘要数据告诉您应用程序、加载模块和符号(如果您有符号信息),您花费了大部分时间。您还可以选择单独分析内核空间和用户空间,如果需要,可以使用callpath信息。最新版本的oprofile甚至支持分析JITed代码,因此它相当全面。
https://stackoverflow.com/questions/764246
复制相似问题