Linux性能记录未生成任何示例

Linux性能记录未生成任何示例,linux,arm,perf,Linux,Arm,Perf,我试图在aria10 fpga板(带有2个ARM Cortex A9 CPU)上评测我的用户空间程序,该板支持PMU。我正在运行windriver linux 9.x版。我用人们在互联网上建议的几乎所有配置选项构建了我的内核。此外,我的pgm使用–fno省略帧指针和–g选项编译 我看到的是,‘perf-record’根本不生成任何样本“perf stat true”输出看起来是有效的(不确定如何利用它)。是否有人对我没有看到任何样本生成有任何建议/想法 ~: perf record --call

我试图在aria10 fpga板(带有2个ARM Cortex A9 CPU)上评测我的用户空间程序,该板支持PMU。我正在运行windriver linux 9.x版。我用人们在互联网上建议的几乎所有配置选项构建了我的内核。此外,我的pgm使用–fno省略帧指针和–g选项编译

我看到的是,‘perf-record’根本不生成任何样本“perf stat true”输出看起来是有效的(不确定如何利用它)。是否有人对我没有看到任何样本生成有任何建议/想法

~: perf record --call-graph dwarf --  my_app

^C
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.003 MB perf.data ]

~: perf report -g graph --no-children
Error:
The perf.data file has no samples!
 To display the perf.data header info, please use --header/--header-only options.

~: perf stat true

 Performance counter stats for 'true':

      1.095300      task-clock (msec)         #    0.526 CPUs utilized          
             0      context-switches          #    0.000 K/sec                  
             0      cpu-migrations            #    0.000 K/sec                  
            22      page-faults               #    0.020 M/sec                  
       1088056      cycles                    #    0.993 GHz                    
        312708      instructions              #    0.29  insn per cycle         
         29159      branches                  #   26.622 M/sec                  
         16386      branch-misses             #   56.20% of all branches        

   0.002082030 seconds time elapsed
我在此设置中不使用VM。Arria10是intel FPGA,带有支持PMU的2个ARM CPU


编辑:
1.我现在意识到ARMCPU支持硬件PMU(与我前面提到的相反)。即使有硬件PMU支持,我也无法成功完成“性能记录”。

这是一个老问题,但对于通过搜索找到此问题的人:

perf record -e cpu-clock <command>
性能记录-e cpu时钟
对我有用。问题似乎是默认事件(周期)不可用

这是一个老问题,但对于通过搜索找到它的人来说:

perf record -e cpu-clock <command>
性能记录-e cpu时钟
对我有用。问题似乎是默认事件(周期)不可用

您是否尝试过对其他硬件/软件事件(如
cpu周期
cpu指令
)进行
perf record
)?尝试在程序中放置重复循环以使其运行更长时间
perf record
执行统计采样,因此如果perf计数器从未溢出,它将不会获得任何样本。@ArnabjyotiKalita使用perf record尝试了这些事件,但它不起作用。然而“perf stat”确实提供了合理的输出。@彼得考德斯我已经尝试了你所说的,并且等待了更长的时间(我的程序占用了大约10%的CPU)。因此,在我的应用程序中有合理的处理量。您需要以root用户身份运行
perf
,还是将
/proc/sys/kernel/perf_event\u paranoid
设置为
0
,以分析内核时间?或者这10%的大部分时间都花在了用户空间上?(您的配置文件输出中没有只针对用户空间显示
cycles:u
,所以您可能还可以)。IDK,你没有给它贴上架构标签,我甚至不知道Aria10是什么。你有没有尝试过其他硬件/软件事件,比如
cpu周期
cpu指令
?尝试在你的程序中加入一个重复循环,使其运行更长时间
perf record
执行统计采样,因此如果perf计数器从未溢出,它将不会获得任何样本。@ArnabjyotiKalita使用perf record尝试了这些事件,但它不起作用。然而“perf stat”确实提供了合理的输出。@彼得考德斯我已经尝试了你所说的,并且等待了更长的时间(我的程序占用了大约10%的CPU)。因此,在我的应用程序中有合理的处理量。您需要以root用户身份运行
perf
,还是将
/proc/sys/kernel/perf_event\u paranoid
设置为
0
,以分析内核时间?或者这10%的大部分时间都花在了用户空间上?(您的配置文件输出中没有只针对用户空间显示
cycles:u
,所以您可能还可以)。IDK,你没有给它贴上架构标签,我甚至不知道Aria10是什么。