问题标签 [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.

0 投票
1 回答
2535 浏览

android - "bitsperlong.h" : trouble cross-building Perf for ARM (Android)

I am attempting to build Perf for Android, cross-built for the ARM architecture from an x86_64 Ubuntu system (12.04). I am following the directions that come with the Linux kernel, at ./tools/perf/Documentation/android.txt. I have attempted both the NDK-based build, and the AOSP-derived-sysroot methods, documented in that same text file. However, I prefer the AOSP-derived-sysroot method.

This was sync of AOSP's 4.3_r3.1 tag, with kernel 3.10.17 added, and an appropriate .config file generated. (Cross-built kernel was built prior to cross-build Perf attempt below.)

Building Perf for the host platform works fine. But cross-building for ARM fails with the following error:

There are numerous hits from Google on the topic of a missing 'bitsperlong.h' file, some of them even here on SO. For the most part, those questions & answers fall into one of the following categories:

  • Someone trying to build a kernel module (I am not)
  • Someone who isn't cross-building, and just needs to install host kernel headers (I do not)

The only solution offered at the SO link I provided above is to edit Perf's source file to include <asm-generic/bitsperlong.h> instead of <asm/bitsperlong.h>... another variant I've seen is to create a symbolic link in the latter directory to the former.

Neither of those solutions seem kosher to me, and in any case just lead to other compilation errors, such as:

At first I thought this problem might have been caused by not cross-building the kernel itself within that same source tree prior to building Perf (as, perhaps the kernel build sets up some $ARCH-appropriate symlinks, or something,) but after doing so, I still had this same problem.

UPDATE: In case it helps, this was how I cross-built my kernel:

0 投票
1 回答
301 浏览

ubuntu-12.04 - 设置 perf 以监控硬件事件

我正在尝试使用perf stat. 不幸的是,我得到<not supported>了所有硬件事件。如何设置以支持硬件事件?

我需要安装其他东西或更改一些设置吗?我正在运行 Ubuntu 12.04。

0 投票
1 回答
769 浏览

android - 从 $AOSP/extenal/linux-tools-perf 编译 android perf

当我从 Google 下载 android 源代码 4.3 时,我发现 perf 源代码已经存在于 $AOSP/extenal/linux-tools-perf 中。但是在我为模拟器编译项目后,我没有在 system/bin 中找到“perf”。为什么?

我应该明确指出 make 目标吗?像“make perf_eng”?或者我应该选择一个安卓设备作为目标?

0 投票
1 回答
436 浏览

ubuntu - perf kvm 报告未知

我在 ubuntu 13.04 服务器中使用 perf。内核 3.8.0-19-通用。我使用相同的操作系统在 kvm 中运行虚拟机。

我想从主机端分析来宾操作系统。所以我按照指导并执行以下步骤:

  1. 从 vm 复制 /proc/modules 和 /proc/kallsyms
  2. perf kvm --guest --guestmodules=guest-modules --guestkallsyms=guest-kallsyms 记录 -a
  3. perf kvm --guest --guestmodules=guest-modules --guestkallsyms=guest-kallsyms 报告

但报告的输出未知

为什么输出未知?使用 perf kvm top 会有类似的输出。

0 投票
1 回答
932 浏览

c++ - 性能输出中的奇怪字符...

我正在尝试使用我用符号编译的 Linux perf 调试 webkit 构建。

“perf report -g”的输出具有一半人类可读的符号和另一半字母数字值。

例如:

这里发生了什么事?

什么是_ZN7?

我的预感是这与 C++ 有关,也许我需要使用更多选项进行编译,以使符号在 perf 中正确表示。

这里的任何指针将不胜感激。我在文档中的任何地方都找不到有关此的任何信息。

0 投票
1 回答
94 浏览

linux - 为什么命令“perf list”在同一版本的 RedHat Linux 上会产生不同的输出?

我有两台操作系统版本相同的 RedHat Linux 机器,但是对于 command perf list,它会产生不同的输出。

第一台机器:

猫 /proc/版本

Linux 版本 2.6.32-279.11.1.el6.x86_64 (mockbuild@ca-build44.us.oracle.com) (gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)) #1 SMP Tue 2012 年 10 月 16 日 08:03:36 PDT

性能--版本

性能版本 3.0.36-300.17.1.el6uek.x86_64

在这台机器上,perf list无法列出任何跟踪点事件。

第二台机器:

猫 /proc/版本

Linux 版本 2.6.32-279.11.1.el6.x86_64 (mockbuild@ca-build44.us.oracle.com) (gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)) #1 SMP Tue 2012 年 10 月 16 日 08:03:36 PDT

性能--版本

性能版本 3.0.36-300.17.1.el6uek.x86_64

在这台机器上,perf list可以列出所有事件

0 投票
2 回答
602 浏览

intel - Intel Xeon 上缓存事件的性能计数器

我尝试perf为 Intel Xeon E5 系列使用性能计数器 (linux)。

我对缓存未命中的解释感到困惑。虽然 L1 和 LLC 值很容易访问,但必须通过 -rNNN 事件从寄存器中读取 L2 的信息。但是在文档中,我还没有找到如何将事件编号与掩码字段组合以给出 NNN 值。中只有一个示例perf help显示了值 A8 和掩码 01,结果为 1a8。但是掩蔽时的一般规则是什么?它不应该写在文档中还是标准的 OR 函数之类的?

此外,我还没有从文档或其他相关主题的回复中了解,在 Xeon 案例中测量的 LLC 值是针对 L3 还是 L2。当硬件中有第三级缓存时会发生什么?LLC 是否仍然测量最后一级,即 L3 事件?

有没有人清除它?

0 投票
2 回答
1689 浏览

c++ - 无法为 C++ 方法添加性能探针

我正在尝试perf probe在我的库中为 C++ 方法添加一个,但我不断收到以下信息:

我列出了可用的功能,如下所示:

并尝试了一些也包含在内的 C 函数。可以为这些添加探针。所以我尝试了错误的名称(例如_ZN2my8Own16Method)并perf probe说它不存在。

有没有办法解决这个问题?

0 投票
1 回答
81 浏览

linux - 使用 perf 进行应用程序例程跟踪

是否可以使用 linux perf 工具在预编译的二进制文件中捕获用户空间函数的参数?我无法通过文档或谷歌解决这个问题?

如果没有其他建议?谢谢...

0 投票
2 回答
18045 浏览

linux - 有没有办法将 kptr_restrict 设置为 0?

我目前在运行 linux perf 时遇到问题,主要是因为/proc/sys/kernel/kptr_restrict当前设置为 1。

但是,如果我尝试/proc/sys/kernel/kptr_restrict通过如下方式回显 0...

我收到权限被拒绝错误。我认为我也不能更改它的权限。

有没有办法以某种方式直接设置它?我是超级用户。如果没有设置,我认为 perf 无法正常运行。