如何使用较新的性能工具前端和较旧的性能版本的记录

Raj*_*jiv 2 c++ linux linux-kernel perf

我正在 ARM 板上的旧版本内核上运行 perf record。内核版本为3.18.21-rt19

板上的 perf 版本同样是 perf 版本 3.18.21。

虽然我可以在此性能上记录和使用报告功能,但此版本的报告 TUI 非常糟糕/不存在。它不是可扩展部分(在图形模式下),而是显示为一个巨大的可滚动函数列表,非常难以使用。另外,由于某种原因,我的 C++ 函数名称没有被破坏,因此很难阅读它。

是否有可能以某种方式:

  1. 将在此较旧 ARM 内核上创建的 perf.data 导出到运行较新内核和较新版本 perf 的 x86 计算机,并使用该计算机上的 perf 报告。当我尝试这样做时(我在运行 perf 版本 4.4.13 的内核 4.4.0-31-generic 上运行),我丢失了所有符号,即使在 ARM 计算机上运行 perf 报告显示符号很好(C++ 名称仍然被破坏) )。我不确定这是否只是因为这些内核版本之间的 perf.data 格式发生了变化,或者 x86 版本是否完全无法读取 ARM 机器生成的数据。

  2. 为我的旧内核构建一个更新的性能版本(至少是前端),它可以进行整理并公开更新的更好的 TUI。

更改 ARM 板上的内核版本对我来说不是一个选择。

osg*_*sgx 7

\n

导出性能数据

\n
\n\n

导出perf.data应该支持perf archive命令,检查 man perf-archive - http://man7.org/linux/man-pages/man1/perf-archive.1.html

\n\n
\n

perf-archive- 使用在 perf.data 文件中找到的 build-ids 的目标文件创建存档

\n\n
  perf archive [file]\n
Run Code Online (Sandbox Code Playgroud)\n\n

此命令运行 perf-buildid-list --with-hits,并收集具有找到的 buildid 的文件,以便可以在另一台计算机上分析 perf.data 内容。

\n
\n\n

Perf 教程中没有使用 perf 存档的示例:https://perf.wiki.kernel.org/index.php/Tutorial ,但在http://events.linuxfoundation.org/sites/events/files/slides中提到/LinuxConJapan2015-DynamicProbes.pdf#page=22 “Buildid 缓存是什么\xe2\x80\x99?..这还允许我们分析来自远程计算机的 perf.data(perf-archive 就是这样做的)”

\n\n

使用 perf 与其他体系结构 (x86) 来扩容 ARM 文件可能很困难,因此您可能可以尝试使用一些 ARM 系统模拟器(例如qemu/ qemu-system-arm)和一些最新的 ubuntu/arm 或 linaro/arm iso 或根映像(它们应该具有完整的-精选perf)。

\n\n

您还可以尝试将更好版本的 perf 实用程序(由您构建或从 ubuntu 或 linaro 复制)上传到您的主板 - perf 用户空间工具与各种内核版本上的 perf_events 内核接口兼容,并且它可以读取perf.data记录不同版本的 perf 工具。

\n