在Yocto中远程使用perf进行性能分析的方法咨询
实现远程Perf性能分析的解决方案(Xilinx Yocto Langdale版本)
步骤1:为目标端构建轻量版Perf工具
针对性能较弱的目标端,仅保留perf record核心功能以减小体积:
- 在Yocto构建目录的
local.conf中添加配置:IMAGE_INSTALL:append = " perf" PERF_FEATURES:remove = "trace probe dwarf unwind" # 禁用非必要功能,压缩工具体积 - 单独编译并提取Perf二进制,无需烧录完整镜像:
从bitbake perf -c compile -c installtmp/deploy/rpm/[目标架构]/(或对应包格式目录)取出perf二进制文件,通过scp推送到目标端即可。
步骤2:在主机端保留调试符号
确保构建时生成并保留调试符号,用于后续主机端分析:
- 在
local.conf中开启调试符号生成:DEBUG_BUILD = "1" PACKAGE_DEBUG_SPLIT_STYLE = "debug-file-directory" - 将目标端的可执行文件、库文件,以及
tmp/work/[目标架构]/[对应配方]/[版本]/image/usr/lib/debug下的调试符号,同步到主机端的某个目录(比如~/target-debug/),保持路径与目标端完全一致(例如目标端/usr/bin/app对应主机端~/target-debug/usr/bin/app,调试符号放在~/target-debug/usr/lib/debug/usr/bin/app.debug)。
步骤3:远程Perf分析流程
- 目标端录制性能数据:
在目标端执行录制命令,可将输出写入外部存储避免占用内存:
(perf record -g -o /mnt/usb/perf.data -- /path/to/your/application-g用于记录调用栈,-F可指定采样频率,按需调整参数) - 传输数据到主机端:
scp root@[目标端IP]:/mnt/usb/perf.data ~/perf-analysis/ - 主机端生成性能报告:
使用主机端Perf工具,指定调试符号路径进行分析:perf report -i ~/perf-analysis/perf.data --symfs ~/target-debug/
步骤4:构建主机端兼容的Native Perf
若主机端自带Perf与目标端版本不兼容,用Yocto构建适配的Native Perf:
- 在
local.conf中添加:BB_GENERATE_MIRROR_TARBALLS = "1" - 编译Native Perf:
从bitbake perf-nativetmp/deploy/tools/perf-native/提取二进制文件,添加到主机端PATH即可使用。
额外优化建议
- 避免频繁烧录镜像:仅推送Perf二进制和更新后的可执行文件到目标端,减少构建与烧录耗时。
- 缓解目标端内存压力:将Perf录制数据直接写入USB等外部存储,无需挂载交换分区。
内容的提问来源于stack exchange,提问作者Kees-Jan
相关产品推荐
相关产品推荐

