如何使用较新的perf工具前端以及较旧的perf版本的记录

拉吉夫

我在ARM板上的较旧版本的内核上运行perf记录。内核版本为3.18.21-rt19

主板上的perf版本与perf版本3.18.21类似。

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

是否有可能是这样的:

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

  2. 为我的旧内核构建一个更新的perf版本(至少是前端),该版本可以进行分解并公开更新的更好的TUI。

在我的ARM板上更改内核版本不是我的选择。

osgx

导出性能数据

的导出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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

perf 如何使用 ORC 在较新的内核版本中展开堆栈?

使用较新的Mongo Shell版本和较旧的MongoDB版本是否安全?

较新的`btrfs-progs`版本可以与较旧的内核一起使用吗?

如何使用较旧的内核版本进行引导?

使用较新的RichEdit版本?

使用较旧的“ Web参考”引用较新的WCF项目

如何获得较旧的Xcode beta版本?

如何使用较新的包来满足较旧的依赖项?

cloudfoundry:使用较旧的buildpack版本

使用较旧的 OpenSSL 版本安装 OpenSSH

SQLite:使用较旧的记录合并同一表中的行以在较新的记录中填充空白

较新的JRE版本可以运行用较旧的JDK版本编译的Java程序吗?

如何使用Brew安装较旧的配方?

较旧的Debian发行版上的python3的较新的Debian版本?

为什么我的独立于操作系统的grub分区能够使用较旧的内核版本正确引导至Ubuntu,而不能使用较新的内核版本?

如何从较旧的模板版本创建客户端规范?

如何在较旧的Java版本中运行程序?

如何在 yocto 中指定较旧的 gcc 版本

如何在R中生成较旧的pmml版本

如何在Ubuntu上安装较旧的Arangodb版本

如何在CentOS上安装较旧的R版本

React日期选择器使用较旧的React版本

在Visual Studio中更改(使用较旧的)C ++版本

为什么AWS Lambda使用较旧的节点版本?

使用 Swift 4 定位较旧的 macOS 版本

是否仍然可以使用较旧的API版本制作新的Facebook应用(版本v2.3)

如何在较新的Xcode上安装较旧的iOS运行时?

我可以使用较新的gcc / clang定位较旧的linux吗?C ++

较新的实现和较旧的实现之间的区别