问题标签 [likwid]
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.
java - 错误预测的分支退休和错误预测的分支执行之间的区别
我有一个不寻常的案例,我正在检查一个相对简单的 Java,它应该有很好的预测分支行为,但是 likwid-perfctr 报告了一个巨大的(50%)分支错误预测率。但是,运行时间与错误预测率不一致(CPI 非常低,约为 0.3,前端和后端的停顿率很低)。类似的 C++ 程序没有错误预测,但实际上运行时间稍长。
似乎差异在于 BR_MISP_RETIRED_ALL_BRANCHES 与 BR_MISP_EXEC_ANY 事件。用于计算误判率的前者很大,每个循环一个事件。后者非常小,与预期的误判率一致,也与运行时间一致。
对于我尝试过的其他示例程序,它们确实表现出严重的错误预测(例如,在数组中的随机值上进行分支),这些值非常相似。
有人熟悉这两个计数器的确切含义吗?对于错误预测的分支,“已退休”计数器如何比“执行”计数器大 25 倍 - 当任何分支必须在其退休之前执行时?
linux - 部分程序的性能统计
perf 是否可以仅收集程序执行部分的硬件计数器统计信息?如果是这样,怎么做?
likwid 提供了能够定义命名区域的功能,但如果这在只安装了 perf 的系统上是可能的,那就太好了。
之前的一些问题已经返回了相关答案,但还是存在一些不足:
- 使用探针我得到了同样的错误,我使用的是一个稍新的内核(3.13)。这些修复程序是否在较新版本中可用?
- 使用 perf_event_open我想保持在命令行上定义事件的灵活性。我还查看了 perf stat本身的代码,但它似乎没有通过调用 perf_event_open 来设置。
performance - 使用 likwid-perfctr 访问性能计数器
我一直在使用 likwid ( link ) 来访问我的双插槽 Intel Xeon E5 2660 v4 处理器中的性能计数器。likwid-perfctr
直到去年 12 月,我才能够成功使用该工具 ( )。将近一个月后,当我今天回到该工具时,我收到以下警告:
WARN: Counter PMC0 is only available with deactivated HyperThreading. Counter results defaults to 0.
WARN: Counter PMC1 is only available with deactivated HyperThreading. Counter results defaults to 0.
WARN: Counter PMC2 is only available with deactivated HyperThreading. Counter results defaults to 0.
即使从 BIOS 启用/禁用超线程,问题仍然存在。此外,即使我以 root 身份运行 perfctr 命令,我也会收到此错误。
有人遇到过这个问题吗?最近是否有任何内核更新导致难以读取 MSR 寄存器(这可以解释上个月出现警告消息的原因)?
系统信息:Debian Stretch,内核 3.16,likwid 版本 4.3,最后是我尝试运行的命令
likwid-perfctr -C N:0-27 -g L3CACHE -m executable
likwid - likwid-perfctr 不适用于 ryzen 5 3600
我正在尝试在我的 Ryzen 5 3600 上使用 likwid(我以前使用过,但系统是由教授设置的,所以我从未安装过。我按照列出的安装步骤进行操作),它只能部分工作。likwid-topology 等一些命令可以正常工作,但是当我尝试使用 likwid-perfctr 时,它说不支持 zen 2,这没有意义,因为它在 github 存储库中列出了 Zen2。错误信息如下图
我正在使用 sudo,否则它会说我无法访问 msr 模块。
有没有人遇到过这种问题?
perf - 将 perf-stat 结果与 likwid-perfctr 结果进行比较
我想在 perf-stat 的输出与 likwid-perfctr 的输出之间进行一些比较。有没有办法做到这一点。我尝试运行两个命令,一个用于 perf-stat,另一个用于liquid-perfctr。命令是:
第一条指令与 perf-stat 相关,它捕获重要的分支,并且指令冗余计数。第二条指令与捕获相似数据的 likwid-perfctr 有关。顺便提一下,我为 likwid-perfctr 编写了自己的名为 MYLIST1 的组。
但是当我比较两个结果时,结果却大不相同。 输出比较
因此,当我们查看输出时,perf stat 中的 INSTR_RETIRED_ANY 为:15552,likwid-perfctr 的输出为:190594。分支为:3168 与 42744。
我不确定我做错了什么。或者有什么方法可以正确地做到这一点。
process - 哪个进程进入 MPI 中的哪个 cpu 套接字?
我正在运行一个 MPI 程序,在我的主机文件中我只有一个节点。该节点有 2 个 scoket,每个有 8 个物理内核,并且超线程被禁用。
mpiexec -n 8 -f /pathtohostfile/host_file_test ./a.out
我正在使用likwid来测量我的程序消耗的能量。
问题 :
- 上述 8 个进程是否在同一个套接字上运行(以节省能源)或进程可以随机分配到任一套接字?
- 不确定,但是进程上下文可以切换到另一个套接字吗?
- 如果进程是随机分配的,我可以将我的进程固定到核心/插座上以测量能量吗?