【发布时间】:2017-06-28 06:26:58
【问题描述】:
我在 ARM 板上的旧版本内核上运行 perf record。内核版本为3.18.21-rt19
板上的 perf 版本同样是 perf 版本 3.18.21。
虽然我可以在此 perf 上录制和使用报告功能,但用于报告此版本的 TUI 非常糟糕/不存在。而不是可扩展的部分(在图形模式下),它只是显示为一个巨大的可滚动的功能列表,很难使用。另外由于某种原因,我的 C++ 函数名称没有被分解,所以真的很难阅读。
是否有可能:
将在这个较旧的 ARM 内核上创建的 perf.data 导出到运行较新内核和较新版本 perf 的 x86 机器,并在该机器上使用 perf 报告。当我尝试这样做时(我在内核 4.4.0-31-generic 上运行 perf 版本 4.4.13)我丢失了所有符号,即使在 ARM 机器上运行 perf report 显示符号很好(C++ 名称仍然被破坏)。我不确定这是因为 perf.data 格式在这些内核版本之间发生了变化,还是 x86 版本完全无法读取 ARM 机器生成的数据。
为我的旧内核构建一个更新的 perf 版本(至少是前端),它会进行去重并公开更新更好的 TUI。
在我的 ARM 板上更改内核版本不是我的选择。
【问题讨论】:
-
可以构建更新的 perf 用户空间工具。您的性能可能是在没有 TUI 的情况下构建的。要将 perf.data 导出到另一台机器,您应该使用
perf archivecommand 它将使用perf.data复制所有符号信息(或尝试从根 fs 或根 fs 的完整映像复制文件,因为perf.data在perf record之后只有指令地址,而不是完整的对象/功能映射)。
标签: c++ linux linux-kernel perf