问题标签 [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 回答
358 浏览

linux - Oprofile - 使用 operf 在 opreport 中显示 INST_RETIRED 和 l1d_replacement 事件

主机:Ubuntu 14.04 Opef 版本:0.9.9

我想在 opreport 中显示两个事件,以便输入以下命令来运行 operf:

几秒钟后,终端显示“Profiling done”

然后我输入:

我没有指定路径,因为手册页表明数据自动保存在“oprofile_data”中。

但是,输出没有显示“l1d_replacement”和“INST_RETIRED”事件。

我相信我在这里错过了一些东西,以使这两个事件出现在 opreport 上。

任何想法 ?谢谢

0 投票
1 回答
4145 浏览

linux - oprofile 二进制构建错误 - (未找到自由库)

在我的主机(Ubuntu 15.04)上下载 oprofile 源代码后,由于某些原因,我需要自己构建二进制文件。

我输入以下命令来构建二进制文件

并收到错误消息

通过搜索此错误的修复程序,我发现需要安装一个包。

但是,即使软件包已成功安装,仍然会出现相同的错误。

有什么我可以检查的吗?

谢谢

0 投票
1 回答
4503 浏览

optimization - 什么是良好的缓存命中/未命中率?

我在我们的程序上运行 ocount 来计算 L2 缓存读取事件,我们得到以下结果:

但是,我们不知道这些结果是否应该被视为完全缓存垃圾。

您认为 L2 缓存的良好命中率/未命中率是多少?

我希望它在很大程度上取决于 CPU 架构和应用程序要求,但它有一般可接受的值吗?

0 投票
1 回答
115 浏览

parallel-processing - 使用 OpenMP 的 OProfile

我通过执行以下操作将 OProfile 用于 OpenMP 并行化代码,

我如何知道事件是按 CPU 计算还是作为一个整体计算?如果我在没有 OpenMP 的情况下编译,我很确定它作为一个整体,因为它们接近数字,但我想确定。

0 投票
1 回答
84 浏览

powerpc - Power8 上的 PM_DATA_ALL* 和 PM_DATA* 事件有什么区别?

在使用 Power8 处理器评估内存性能时,我遇到perf了理解事件PM_DATA_ALL_*PM_DATA_*. 大多数计数器在两个版本中都存在,但oprofile 文档中的描述和 inpapi_native_avail相同,例如:

PM_DATA_FROM_LMEM

如果 MMCR1[16] 为 1,则处理器的数据高速缓存从本地芯片的内存中重新加载,因为只有按需加载或按需加载加上预取。

我虽然会通过测量一些数据来找出差异。如果我提供足够大的任务,我可以观察到*_ALL版本具有更高值的预期差异。我理解使用perf.

那么这些事件的全部内容到底是什么?

0 投票
0 回答
345 浏览

performance - oprofile - 使用 ocount / operf - LLC 未命中问题 100%

主机:ubuntu 15.04

oprofile 版本:1.1.0

CPU:英特尔至强 D-1520

1.

结果是:

和相同LLC_MISSESLLC_REFS表示缓存丢失率为 100%。为什么会这样?对我来说它看起来不正确。

operf用来做测试:

L1D是比较公平的。但是,LLC ( Last Level Cache )缓存未命中率与ocount100% 相同。

我还没有找到根本原因,如果您知道原因或如何解决此问题,请分享您的经验。

谢谢

0 投票
2 回答
219 浏览

linux-kernel - 系统分析 - 共享库的使用信息

有没有办法知道在一段时间内哪个进程(或多少个进程)正在使用哪些库文件。

可以为此使用 V-Tune 或 perf 或 OProfile 吗?

0 投票
1 回答
855 浏览

c - 优化慢循环

代码看起来像这样,内部循环需要大量时间:

oprofile 告诉我大部分运行时间都花在这里(第二列是时间百分比):

我的第一个问题是:我是否可以依靠 oprofile 来指示代码运行缓慢的正确位置(我在 -Og 和 -Ofast 中尝试过,它基本相同)。

我的第二个问题是:为什么这个非常简单的循环比 sqrt、atan2 和之前的数百行计算慢?我知道我没有显示所有代码,但是有很多代码,对我来说没有意义。

我尝试了各种优化器技巧来矢量化(不起作用)或展开(起作用)但收效甚微,例如:

我检查了优化器的输出:“-Ofast -g -march=native -fopt-info-all=missed.info -funroll-loops”,在这种情况下,我得到“循环展开 9 次”,但如果我尝试矢量化,我得到(简而言之):“无法强制对齐参考”,“矢量对齐可能无法到达”,“矢量化未对齐的访问”,“访问的未知对齐:*(prephitmp_3784 +((sizetype ) _1328 + (long unsigned int) (n_bol_1173 * 500) * 2) * 4)"

有什么办法可以加快速度吗?

附录:谢谢大家的意见,我会在这里回答:

  • 是的,我知道代码很丑(不是我的),而且你还没有看到真正的原始代码(这是一个巨大的简化)
  • 我坚持使用这个数组,因为 C 代码位于库中,而大型数组一旦被 C 处理和修改,就会传递给调用者(IDL、Python 或 C)。
  • 我知道使用一些结构而不是将 char* 转换为复杂的多维 double* 会更好,但请参见上文。当第一次编写这个程序时,结构可能不是 C 规范的一部分(开个玩笑......也许)
  • 我知道对于矢量化器来说,数组结构比结构数组更好,但是,叹息......见上文。
  • 有一个实际的外循环(在调用程序中),所以这个整体数组的总大小约为 2Gb
  • 照原样,在没有优化的情况下运行大约需要 15 分钟,并且在我重写了一些代码(更快的 atan2,数组内的一些手动对齐......)之后一分钟,我使用了 -Ofast 和 -march=native
  • 由于硬件的限制变化,我试图更快地跟上数据流。
  • 我尝试使用 Clang 并且收益很小(几秒钟),但我没有看到获得优化报告的选项,例如 -fopt-info。我是否必须将程序集视为了解发生了什么的唯一选择?
  • 该系统是一个拥有 500Gb RAM 的 64 核,但我无法插入任何 OpenMP pragma 来并行化上述代码(我已经尝试过):它读取一个文件,将其完全解压缩到内存中(2Gb) ,按顺序分析它(诸如'+='之类的东西)并将一些结果吐出给调用IDL/Python。全部在一个内核上(但其他内核非常忙于实际采集和后期处理)。:(
  • 没用,感谢您的出色建议:删除 ddQ += ... 似乎将时间百分比转移到上一行:376280 39.4835:ddI+=...
  • 这让我们变得更好:删除两者(因此整个循环)保存......什么都没有!所以我想正如彼得所说,我不能相信探查器。如果我分析无环编,我会得到更均匀的时间分布(以前只有 1 秒以上的 3 行,现在大约 10 行,所有这些都像简单的变量分配一样荒谬)。

我猜这个内部循环从一开始就是一个红鲱鱼。我将使用手动计时重新开始优化。谢谢。

0 投票
0 回答
813 浏览

linux-kernel - vmlinux中没有符号

我需要oprofile显示有关内核内部发生的事情的详细信息,而不是将其标记为/no-vmlinux.

为了能够提供oprofile内核符号,我使用了从压缩版本extract_vmlinux/usr/src/linux-headers-3.9.7/scripts获取的脚本。vmlinuxvmlinuz

operf然后我用选项打电话--vmlinux path_to_vmlinux。但是,operf显示以下错误消息:

无法获取 vmlinux 结束地址 指定的 vmlinux 文件 (/tmp/vmlinux) 似乎无效。确保您使用的是非压缩映像文件(例如 vmlinux 不是 vmlinuz)

通过在代码中跟踪此错误消息operf,我发现它最有可能发生在调用之后objdump -t(选项 -t 是“打印文件的符号表条目。”根据 objdump 的手册页)当我运行时:“ objdump -t vmlinux",我得到以下输出:

请你帮助我好吗?

0 投票
1 回答
106 浏览

linux - 我可以在使用 oProfile 时指定一个 CPU 内核吗?

我需要使用 oProfile 在 8 核服务器上进行性能计数器分析,oProfile 是否只能记录 7 核上的事件?谢谢!