问题标签 [perf]
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.
profiling - 使用 perf 分析 D 程序时去除 D 符号
我刚刚在 Linux 上发现了出色的工具 perf。
我用这个描述了一个 D 程序,但是当我打电话时
符号没有被破坏。
我知道,ddemangle
但这仅适用于批处理模式。我总是可以将输出转储到文件中以供查看。但是,如果有人在将符号添加到 perf 数据库文件之前找到了对符号进行解码的解决方案,那就太好了。
performance - The difference between exclude_hv and exclude_host in perf
In kernel 3.11.0, in the struct perf_event_attr
, there are three members named exclude_hv
/exclude_host
/exclude_guest
.
I know the exclude_host
field is to exclude events generated by the host when running kvm. But what is the meaning of exclude_hv
? Is it used in the Xen?
What is the mechanism in hardware that supports the function of exclude_host
? As far as I know, in the performance monitoring select registers, there are no such bits that control the event counter to exclude events generated by the host.
performance - 不同内核版本性能回归原因分析
我在 x86_64 系统上遇到了从 Linux 内核 3.11 到 3.12 的奇怪性能回归。在 Fedora 20 3.12 上运行Mark Stock 的 Radiance 基准测试明显变慢。没有其他任何改变 - 相同的二进制文件,相同的 glibc - 我只是启动了不同的内核版本,性能发生了变化。定时程序 rpict 是 100% CPU 绑定的用户级代码。
在我将此报告为错误之前,我想找出导致此行为的原因。我对 Linux 内核了解不多,从 3.11 到 3.12 的更改日志也没有给我任何线索。
我在两个系统上观察到这一点,一个 Intel Haswell (i7-4771) 和一个 AMD Richland (A8-6600K)。在 Haswell 系统上,用户时间从 3.11 的 895 秒变为 3.12 的 962 秒。在里奇兰,从 1764 年到 1844 年。这些时间可以在几秒钟内重复。
我用 perf 做了一些分析,发现 IPC 的下降与减速的比例相同。在 Haswell 系统上,这似乎是由于更多错过的分支造成的,但为什么预测率会下降呢?Radiance 确实使用了随机数生成器——“更好”的随机性会导致丢失的分支吗?但除了 OMAP4 支持之外,RNG 在 3.12 中似乎不需要更改。
在 AMD 系统上,perf 只是指向更多的空闲后端周期,但原因尚不清楚。
哈斯韦尔系统:
里奇兰系统:
我还查看了两个内核的 dmesg 输出的差异,但没有看到任何可能导致 CPU 密集型程序如此缓慢的任何东西。
我尝试将cpufreq调节器从默认的按需切换到性能,但这没有任何效果。
可执行文件是使用 gcc 4.7.3 编译的,但没有使用 AVX 指令。libm 似乎仍然使用一些 AVX(例如__ieee754_pow_fma4
),但这些函数仅占总执行时间的 0.3%。
附加信息:
- 内核配置的差异
- Haswell 系统上dmesg 输出的差异。
- /proc/pid/maps 的差异- 3.11 仅映射一个堆区域;3.12 手。
- A8-6600K 系统的perf stat 输出
- perf stats w/ TLB misses dTLB stats 看起来很不一样!
- /usr/bin/time -v来自 A8-6600K 系统的输出
有什么想法(除了将内核更改一分为二)?
profiling - perf.data 文件没有样本
我在 ubuntu 11.10 上使用 perf 3.0.4。它的记录命令运行良好,并显示在收集的终端 256 样本上。但是当我使用perf report时,它给了我以下错误:
我搜索了很多解决方案,但还没有成功。
linux - 找出 CPU 有多少个硬件性能计数器
在运行 Linux 的 Intel 或 AMD x86-64 系统上,我在哪里/如何找到我的 CPU 拥有的硬件性能计数器的数量?
我想perf
在执行某些应用程序时使用 Linux 工具来收集硬件性能计数器数据。perf wiki 的教程说,如果我指定(使用-e
标志perf stat
或perf record
)比我的 CPU 中的性能计数器更多的硬件事件,那么这些事件将在执行期间在计数器上多路复用,从而允许它们在一个单一的perf
命令,但可能会降低准确性,因为并非所有计数器都一直处于活动状态。(请注意,我在这里关注硬件事件,例如缓存和 TLB 行为 - 我知道可以跟踪大量/无限数量的内核软件跟踪点而不会不准确)。
如果我找到我的处理器型号,是否有英特尔/AMD 网站可以找到此信息?我可以在系统上运行一个简单的命令来检查硬件计数器的数量吗?我检查了 and 的输出cat /proc/cpuinfo
,x86info -a
但找不到此信息。
android - perf 不适用于某些命令?
我想使用 perf 来分析 Android 上的猴子命令,但我被困住了。
通常,当我运行以下命令时:
但是,当我想得到它的性能统计如下:
我得到:
猴子是一个命令,不是文件也不是目录。为什么我会得到这个?任何帮助将不胜感激!
谢谢你。大卫
performance - 性能和英特尔 PCM 的差异
我知道英特尔s PCM and perf are available, do they use the same hardware counters?? However perf
的原始硬件事件都不清楚,英特尔的 PCM 提供了更多的功能。我可以使用 PCM 以某种方式监控单个进程,如 perf 吗?我知道这可以在 VTune 上完成,但它是专有的。我目前正在开发 ubuntu 12.04。
kernel - perf:无法记录内核引用重定位符号
我已经perf
为我的内核(3.11.10)编译了。在编译过程中,一些库丢失了,所以我已经安装了这些。
但是现在当我运行时perf
,我收到以下消息:
由于我使用的是自定义构建内核,对我来说最明显的解释是,我的内核中缺少某些选项。如果是这样,我怎样才能找出丢失的内容?
我不确定到底perf
在抱怨什么。我怎样才能解决这个问题?
编辑:
/proc/kallsyms
不存在且/proc/sys/kernel/kptr_restrict
包含0
:
我自己编译了内核,它可能缺少一些选项。这是什么/proc/kallsyms
?如何在我的内核中启用它?
android - android 上的 perf 工具不会传递结果
我设置了以下内核配置并构建了内核。并使用http://kwangwoo.blogspot.in/2011/11/performance-monitoring-on-arm.html在 kernel/tools/perf 中单独构建 perf
但我得到的大多数东西都是 0。
但我得到的大多数计数器都是 0。
我在nexus 4设备上做到了这一点。可能是什么问题呢?有人可以帮忙吗?
android - Oprofile在Android上的成功?
我想知道,有没有人成功地为 Android 配置了 oprofile?具体来说,测量硬件计数器事件(不是标准的 oprofile 基于定时器中断的模式)。
如果是这样,您使用的是什么型号的手机,以及哪个内核版本/分支?
这篇文章(Android 上的 OProfile)有点解决我的问题,但它只列出了一个在 Andriod 上的 oprofile 成功案例。特别是,我想看看是否有人知道有很多内置支持 oprofile 的模型或架构(我的经验是,例如,OMAP4 处理器很难为其构建 oprofile)。
如果有人让性能分析器工作,我也很感兴趣,作为替代方案。