我正在ARM板上的旧版本内核上运行perf记录。内核版本是3.18.21-rt19
电路板上的perf版本同样是版本3.18.21。
虽然我可以在此perf上记录和使用报告功能,但是此版本报告的TUI非常糟糕/不存在。它不是可扩展部分(在图形模式下),而是显示为一个巨大的可滚动功能列表,非常难以使用。另外由于某些原因,我的C ++函数名称没有被删除,因此很难阅读它。
是否有可能如何:
将在此旧ARM内核上创建的perf.data导出到运行较新内核和较新版本perf的x86计算机,并在所述计算机上使用perf报告。当我尝试这样做时(我运行内核4.4.0-31-通用运行perf版本4.4.13)我丢失所有符号,即使在ARM机器上运行perf报告显示符号就好了(C ++名称仍然被破坏) )。我不确定这是否因为这些内核版本之间的perf.data格式发生了变化,或者x86版本是否完全无法读取ARM机器生成的数据。
为我的旧内核构建一个较新的perf版本(至少是前端版本),用于执行去剪裁并公开更新的更好的TUI。
在我的ARM板上更改内核版本不是我的选择。
答案 0 :(得分:3)
导出perf.data
使用perf.data
命令支持导出perf archive
,检查man perf-archive - http://man7.org/linux/man-pages/man1/perf-archive.1.html
perf-archive
- 使用perf.data文件中的build-id创建包含目标文件的存档perf archive [file]
此命令运行perf-buildid-list --with-hits,并收集 找到buildid的文件,以便分析perf.data内容 可以在另一台机器上使用。
在Perf教程中没有使用perf存档的例子:https://perf.wiki.kernel.org/index.php/Tutorial但在http://events.linuxfoundation.org/sites/events/files/slides/LinuxConJapan2015-DynamicProbes.pdf#page=22&#34中提到过;什么是Buildid-cache? ..这也允许我们分析来自远程机器的perf.data(perf-archive就是这样)"
很难将perf与其他架构(x86)一起使用以重新获取ARM文件,因此您可能会尝试使用某些ARM系统模拟器(如qemu
/ qemu-system-arm
)与最近的一些ubuntu / arm或linaro / arm iso或root图像(它们应具有全功能perf
)。
您也可以尝试上传更好的perf实用程序版本(由您构建或从ubuntu或linaro复制)到您的主板 - perf用户空间工具与各种内核版本的perf_events内核接口兼容,它可以阅读用不同版本的perf工具记录的perf.data
。