&引用;性能统计;返回<;不支持>;对于ARCH Linux ARM上的所有事件

&引用;性能统计;返回<;不支持>;对于ARCH Linux ARM上的所有事件,linux,perf,Linux,Perf,我在运行ARCH Linux ARM的Cortex-A15 Chromebook上运行得很好 我更新了pacman以获得gcc-5.3,它要求更新我的内核,我照做了 现在perf返回: [cortex@alarm Speckle]$ perf stat uname -a Linux alarm 3.8.11-3-ARCH #1 SMP Wed Jan 20 13:44:59 MST 2016 armv7l GNU/Linux Performance counter stats for 'un

我在运行ARCH Linux ARM的Cortex-A15 Chromebook上运行得很好

我更新了
pacman
以获得gcc-5.3,它要求更新我的内核,我照做了

现在
perf
返回:

[cortex@alarm Speckle]$ perf stat uname -a
Linux alarm 3.8.11-3-ARCH #1 SMP Wed Jan 20 13:44:59 MST 2016 armv7l GNU/Linux

 Performance counter stats for 'uname -a':

   <not supported>      task-clock               
   <not supported>      context-switches         
   <not supported>      cpu-migrations           
   <not supported>      page-faults              
   <not supported>      cycles                   
   <not supported>      stalled-cycles-frontend  
   <not supported>      stalled-cycles-backend   
   <not supported>      instructions             
   <not supported>      branches                 
   <not supported>      branch-misses            

       0.002148765 seconds time elapsed
检查我的内核配置,似乎仍然应该支持
perf

[cortex@alarm Speckle]$ zgrep PERF /proc/config.gz 
CONFIG_CGROUP_PERF=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PERF_EVENTS=y
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CLS_U32_PERF is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set

如果我尝试ocount/oprofile,它似乎可以工作:

[cortex@alarm ~]$ ocount --events INST_RETIRED  uname -a
Linux alarm 3.8.11-3-ARCH #1 SMP Wed Jan 20 13:44:59 MST 2016 armv7l GNU/Linux

Events were actively counted for 1598252 nanoseconds.
Event counts (actual) for /usr/bin/uname:
    Event                Count                    % time counted
    INST_RETIRED         609,518                  100.00

看看pacman的日志,看起来这就是内核更改发生的地方

[2016-04-26 06:24] [ALPM] upgraded libtool (2.4.6-3 -> 2.4.6-4)
[2016-04-26 06:27] [ALPM] upgraded linux-firmware (20150904.6ebf5d5-1 -> 20160315.deb1d83-1)
[2016-04-26 06:27] [ALPM] upgraded linux-peach (3.8.11-2 -> 3.8.11-3)
[2016-04-26 06:27] [ALPM-SCRIPTLET] >>> Updating module dependencies. Please wait ...
[2016-04-26 06:27] [ALPM-SCRIPTLET] A new kernel version needs to be flashed onto /dev/sda1.
[2016-04-26 06:27] [ALPM-SCRIPTLET] Do you want to do this now? [y|N]
[2016-04-26 06:28] [ALPM-SCRIPTLET] 8752+0 records in
[2016-04-26 06:28] [ALPM-SCRIPTLET] 8752+0 records out
[2016-04-26 06:28] [ALPM-SCRIPTLET] 4481024 bytes (4.5 MB, 4.3 MiB) copied, 12.7236 s, 352 kB/s


我把什么搞砸了?我怎么把
perf
弄回来?

我找到的解决办法是从
perf 4.5-2
降级到
perf 4.3-1

cd /var/cache/pacman/pkg/
sudo pacman -U perf-4.3-1-armv7h.pkg.tar.xz

运行
perf stat ls
现在返回我期望的计数器。

您可以直接使用
raw
事件吗?它能工作吗?您的
内核
性能
版本是什么?内核版本是
Linux alarm 3.8.11-3-ARCH
。检查
pacman-Q
,我安装了
linux-api头4.4.1-1
linux固件20160315.deb1d83-1
,以及
perf 4.5-2
。我不熟悉oprof,
oreport
,但它似乎运行正常。如果我得到正确的数字(
perf stat-e cycles,r08,r11 ls
),原始事件似乎不会计数。是否有一个简单的命令可以使用
oprof
来验证它是否有效?如果我做了
sudo operf ls
,它会说当前系统配置不可能进行内核评测。不知道。要确定问题,请检查您更新了哪些内容,以及您是否降级回去,是否可以正常工作。据我所知,它可能是
perf
kernel
。如果您将获得该组件,它可能会满足于一个bug报告(不熟悉它如何与Arch一起工作),因为ARM可能不常用和未经测试。因此,看起来这些家伙再次在
perf
中破坏了某些东西。。。检查它是否适用于以前的版本。不幸的是,我没有这个版本来检查它是否至少在其他架构上工作。我最近看到了一些与ARM相关的变化。不幸的是,我不知道如何进一步调试。但是Arch中的内核维护人员或LKML上的内核开发人员可能会得到更多的帮助。
cd /var/cache/pacman/pkg/
sudo pacman -U perf-4.3-1-armv7h.pkg.tar.xz