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