问题标签 [oprofile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2750 浏览

ubuntu - 配置 Oprofile 时出现“找不到 bfd 库”错误

我下载了 oprofile zip,然后将其解压缩。然后使用命令

我试图安装它。以下是最后的控制台消息。

任何人都可以提出为什么会发生这种情况以及解决方案。提前致谢

0 投票
1 回答
203 浏览

profiling - OProfile 无法生成调用图

我正在尝试使用 oprofile 生成调用图,但由于某种原因它失败了。我正在使用以下命令对其进行配置:

我在这里得到:

然后在尝试生成调用图时(例如使用opreport pdpd -l --callgraph -o profile_pdp.txt

我得到:

我的linux内核版本是2.6.18

运行 opreport 时确实出现以下错误(不知道是否相关):

知道为什么我无法获得完整的通话记录吗?

0 投票
1 回答
301 浏览

c++ - Profiling OpenCV using OProfile

I have this basic OpenCV program:

Which creates the executable ReadImage. I want to profile it using OProfile. However, running:

Returns:

Why this happens? What is the best way to profile OpenCV?

0 投票
1 回答
454 浏览

linux - 为 arm 编译 oprofile 时出错

我正在为 arm 交叉编译 oprofile。

我收到以下错误(请参阅最后一行)

如果我没有将我的 CXX、CPP 设置为交叉编译器二进制文件,那么配置步骤就可以很好地完成,没有错误。

我怎样才能解决这个问题?

0 投票
1 回答
441 浏览

c - 如何使用oprofile计算一部分C程序的执行时间?

我想使用分析 C 代码的一部分(user_defined_function())并计算执行它所花费的时间。有关如何执行此操作的任何指示都会非常有帮助。提前致谢!!

0 投票
0 回答
154 浏览

c - 如何使用 perf 或任何分析工具来查找我的应用程序或程序的功能所使用的 cpu 周期或 cpu 数量

嗨,我正在尝试在 yocto 系统上使用 perf。当我执行 perf record ./application 时,我得到了这些数据

因为我的代码functiona和functionb中有两个函数,由main.c调用。我需要分析应该更具体到这两个功能,比如

类似的东西。如何使用 perf 工具或 oprofile 工具获得它

0 投票
0 回答
14 浏览

c++ - opreport 似乎报告了错误的模板实例化

我目前正在尝试分析共享库。不幸的是,sprof 似乎无法在我的系统上运行,所以我使用的是 oprofile。

但是,当我调查分析数据时,大部分时间都被指示用于模板化方法。这是意料之中的,因为大多数数字计算都是在该方法中进行的。但是,opreport 表明时间花费在此模板的某个专业化上。这可以解释为什么计算看起来比它应该的要慢。其中一些专业包括优化的代码,而另一些则不包括,并且 opreport 表明时间花在了优化程度较低的版本上。共享对象包括实例化的两个版本,但我必须知道决定使用哪一个的代码是否正常工作。

cout在模板中添加了一些 s,这些似乎表明采取了正确的专业化,但我仍然对 opreport 输出感到困惑。

编辑

这里有一些关于我在做什么的更多细节。代码必须能够运行任何长度的输入,但如果我知道大小,我可以优化它。所以我正在做这样的事情:

在实际代码中,我使用了一些模板魔术来允许代码优化为的最大数量#define,但想法是相同的。现在我需要确保,simulator<0>::run()当它不应该被调用时,它真的从未被调用过。但是 opreport 表明只有这个运行,但没有其他(cout不同意)。

0 投票
1 回答
258 浏览

linux - 为什么在 ARM 上预取更多数据时会发生更多缓存未命中?

我正在使用OProfile在树莓派 3B+ 上分析以下函数。(我在树莓派上使用 gcc 10.2 版(不进行交叉编译)和编译器的以下标志:-O1 -mfpu-neon -mneon-for-64bits. 最后包含生成的汇编代码。)

我正在查看L1D_CACHE_REFILLPREFETCH_LINEFILL两个 cpu 事件。查看文档PREFETCH_LINEFILL计算由于预取而L1D_CACHE_REFILL导致的缓存行填充次数,并计算由于缓存未命中而导致的缓存行重新填充次数。对于上述循环,我得到了以下结果:

数组大小 array_size / L1D_CACHE_REFILL array_size / PREFETCH_LINEFILL
16777216 18.24 8.366

我想上面的循环是内存绑定的,这在某种程度上由值 8.366 确认:每个循环实例需要 3 x uint32_t,即 12B。8.366 个循环实例需要约 100B 的内存数据。但是预取器每 8.366 个循环实例只能将 1 个缓存行填充到 L1,根据 Cortex-A53 的手册,它有 64B。因此,其余的缓存访问将导致缓存未命中,即 18.24。如果将这两个数字结合起来,您将得到 ~5.7,这意味着每 5.7 个循环实例从预取或缓存未命中重新填充中填充 1 个缓存行。而 5.7 循环实例需要 5.7 x 3 x 4 = 68B,或多或少与缓存行大小一致。

然后我在循环中添加了更多东西,然后变成以下内容:

而 cpu 事件的分析数据是我不明白的:

数组大小 array_size / L1D_CACHE_REFILL array_size / PREFETCH_LINEFILL
16777216 11.24 7.034

由于循环需要更长的时间来执行,预取器现在只需要 7.034 个循环实例来填充 1 个缓存行。但我不明白的是为什么缓存丢失也更频繁地发生,反映在数字 11.24 上,与之前的 18.24 相比?有人可以阐明如何将所有这些放在一起吗?


更新以包含生成的程序集

循环1:

循环2:

0 投票
0 回答
41 浏览

c++ - 如何使用带有配置文件的可执行二进制文件运行 gprof2dot.py?

对于正常的可执行文件,查看运行时间图片。

我可以这样做:

backtest是我的可执行文件。

但是如果backtest需要配置怎么办?例如,回测的运行命令是:

我认为:

这个命令不好,我怎样才能让它工作?

0 投票
0 回答
3 浏览

oprofile - 有没有办法在没有可用源的剥离二进制文件上使用 oprofile?

假设您有一个剥离的 ELF 二进制文件并且没有可用的源,但是完成任务和退出所花费的时间太长,并且您想知道程序中的哪些二进制偏移地址在大多数时间处于活动状态。

Oprofile 可以告诉我们吗?

如果是这样,命令是什么?

谢谢!