我正在尝试让 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 ]
Run Code Online (Sandbox Code Playgroud)
在我们的目标机器上运行的Linux版本:5.4.66-rt38-intel-pk-preempt-rt
我用来编译性能的代码:https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/log/ ?h=v5.4-rt
因为我得到这个“无法合成 bpf 事件”,所以我认为我没有在性能报告中获取用户空间堆栈。我应该怎么做才能消除此错误以使用 perf 获取正在运行的进程的用户空间堆栈?请指教!