我在ARM板上的较旧版本的内核上运行perf记录。内核版本为3.18.21-rt19
主板上的perf版本与perf版本3.18.21类似。
虽然我可以在此性能上记录和使用报告功能,但此版本的报告的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板上更改内核版本不是我的选择。
导出性能数据
的导出perf.data
应受perf archive
命令支持,请检查man perf-archive- http://man7.org/linux/man-pages/man1/perf-archive.1.html
perf-archive
-使用在perf.data文件中找到的带有构建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 “什么是Buildid缓存?..这也使我们能够分析来自远程计算机的perf.data(perf-archive可以做到)”
在其他架构(x86)上使用perf可能很难对ARM文件进行扩容,因此您可能会尝试使用一些具有最新ubuntu / arm或linaro / arm iso或root映像的ARM系统仿真器(例如qemu
/ qemu-system-arm
)(它们应该具有完整的映像) -功能perf
)。
您也可以尝试将性能更好的版本的perf实用程序(由您自己构建或从ubuntu或linaro复制)上传到您的电路板上-perf用户空间工具与perf_events内核接口兼容,适用于各种内核版本,并且可以读取perf.data
记录性能工具的不同版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句