【问题标题】:"perf stat" returning <not supported> for all events on ARCH Linux ARM“perf stat”为 ARCH Linux ARM 上的所有事件返回 <不支持>
【发布时间】:2016-08-21 10:32:16
【问题描述】:

我在运行 ARCH Linux ARM 的 Cortex-A15 Chromebook 上运行良好的 perf

我更新了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 list,它会告诉我它应该支持这些事件:

[cortex@alarm Speckle]$ perf list

List of pre-defined events (to be used in -e):

  branch-instructions OR branches                    [Hardware event]
  branch-misses                                      [Hardware event]
  bus-cycles                                         [Hardware event]
  cache-misses                                       [Hardware event]
  cache-references                                   [Hardware event]
  cpu-cycles OR cycles                               [Hardware event]
  instructions                                       [Hardware event]
  ref-cycles                                         [Hardware event]

并检查我的内核配置,看来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

【问题讨论】:

  • 可以直接使用raw事件吗?它是否适用于oprofile?你的kernelperf 是什么版本?
  • 内核版本是Linux alarm 3.8.11-3-ARCH。检查pacman -Q,我已经安装了linux-api-headers 4.4.1-1linux-firmware 20160315.deb1d83-1perf 4.5-2。我不熟悉oproforeport,但它似乎运行没有错误。如果我的数字正确 (perf stat -e cycles,r08,r11 ls),原始事件似乎不算数。
  • 是否有一个简单的命令可以使用oprof 来验证它是否有效?如果我执行sudo operf ls,则表示当前系统配置无法进行内核分析。
  • 不知道。要确定问题,请检查您更新了哪些内容,以及您是否降级了它是否可以正常工作。据我所知,它可能是perfkernel。如果你会得到这个组件,它可能是一个错误报告的内容(不熟悉它如何与 Arch 一起工作),因为 ARM 可能不常用和测试。
  • 所以看起来这些家伙确实在perf 中再次破坏了某些东西......检查它是否适用于以前的版本。不幸的是,我没有这个版本来检查它是否至少适用于其他架构。我最近看到了一些与 ARM 相关的变化。不幸的是,我不知道如何进一步调试。但是 Arch 中的内核维护人员或 LKML 上的内核开发人员可能会得到更多帮助。

标签: linux perf


【解决方案1】:

我找到的解决方案是从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 现在返回我期望的计数器。

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2012-11-26
    相关资源
    最近更新 更多