我试图让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的代码
因为我得到了“无法合成bpf事件”,所以我认为我不会在perf报告中得到用户空间堆栈。使用perf获取正在运行的进程的用户空间堆栈时,我应该做些什么来消除这个错误?请给我建议!
发布于 2021-02-04 08:15:11
内核配置中没有启用CONFIG_BPF_SYSCALL。在启用它之后,我可以看到“无法合成bpf”已经消失了。把答案标记出来。
https://stackoverflow.com/questions/66024727
复制相似问题