微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perf:无法合成 bpf 事件

如何解决perf:无法合成 bpf 事件

我正在尝试让 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 获取正在运行的进程的用户空间堆栈?请多多指教!

解决方法

CONFIG_BPF_SYSCALL 未在内核配置中启用。 启用后,我可以看到“无法合成 bpf”消失了。 将其标记为已回答。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。