perf: 无法合成BPF事件

6

我正在尝试在我们的一个Linux设置中运行perf工具,但该设置没有Linux源代码或无法获得Linux源代码。 因此,在另一台机器上下载了Linux代码并编译了perf (cd tools/perf; make)。 然后将perf二进制文件复制到目标机器上。 但是,在开始记录时,它会显示“无法合成bpf事件”。

root> perf record -a -g --call-graph dwarf -p 836
Warning:
PID/TID switch overriding SYSTEM
Couldn't synthesize bpf events.
[ perf record: Woken up 1 times to write data ]
Failed to read max cpus, using default of 4096
[ perf record: Captured and wrote 0.057 MB perf.data ]

我们目标机器上运行的Linux版本为:5.4.66-rt38-intel-pk-preempt-rt

我用来编译perf的代码:https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/log/?h=v5.4-rt

由于我遇到了“couldn't synthesize bpf events”这个错误,所以我认为在perf报告中没有获取到用户空间堆栈。请问我应该怎么做才能消除这个错误并使用perf获取正在运行的进程的用户空间堆栈呢?请给些建议!

1个回答

7

内核配置中未启用 CONFIG_BPF_SYSCALL。启用后,我看到“ couldn't synthesize bpf”不见了。将其标记为已回答。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接