问题标签 [gperftools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
384 浏览

hex - gproftools 分析中的十六进制函数名称

在使用 gproftools(谷歌分析器)进行 CPU 分析后,它会将一些函数名称显示为十六进制值。

根据https://groups.google.com/forum/#!topic/google-perftools/7sdO7wrPUpE的最后评论,问题看起来像是由ASLR引起的 但我不明白为什么很少有函数名称是十六进制值而其他都是正常的。

分析的样本输出。

16 0.40% 86.80% 16 0.40% 00007f05e018bc5d

16 0.40% 87.20% 36 0.90% _IO_file_xsgetn

16 0.40% 87.60% 16 0.40% __memcpy_sse2

16 0.40% 88.00% 16 0.40% __tls_get_addr

15 0.40% 88.40% 15 0.40% __GI___libc_free

15 0.40% 88.70% 15 0.40% __GI_strlen

0 投票
1 回答
306 浏览

gperftools - 如何获得正确的 gperf 样本报告

我有一些gperf tool文件:

第一个运行了大约 2 分钟,文件为18M

其他运行约2小时,文件约800M

当我尝试使用 :pprof --text获取报告时,发现第一个有1300个样本,但是这 2 个小时只运行了5500个样本。

我排除了较大的文件2*3600*100 samples(因为“默认情况下,gperf 工具每秒采集 100 个样本”)。

同样的程序,同样的运行环境,为什么样本太少?对不起我糟糕的英语。

0 投票
0 回答
209 浏览

c++ - 将 gperftools 与 Jetson TX1 开发套件一起使用

我被推荐使用 gperftools 来简单快速地分析我的代码。此外,-lprofiler 的集成已经在我得到的代码的 CMAKE 中完成。现在我将源代码迁移到 Jetson TX1 并且运行良好,我尝试使用 gperftools。

不幸的是,当我使用 perftools 启动程序时,分段错误开始出现

我已经阅读了文档,他们谈到了在 64 位 Linux 上使用正确的 libunwind。不幸的是,给定的库(0.99 libunwind,http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.gz)似乎不喜欢 Tegra 平台。

首先,config.guess 有一个问题,我必须用位于 /usr/share/automake*/ 中的那个进行更改。

然后它会像这样出错:

我尝试使用主树,因为他们添加了 AARCH64(出现在错误消息中),但随后我收到其他消息:

  • 任何人都能够在 Tegra Dev Kit 或类似平台上使用 gperftools 吗?
  • libunwind 是段错误问题的一部分吗?代码再次在没有 -lprofiler 和 CPUPROFILER 的情况下工作。
0 投票
1 回答
702 浏览

profiler - 使用 GPerf 工具:不工作,重定向问题?

我正在尝试分析我的软件以优化它。

我使用gprof了编译标志-g -pg -O3,但结果没有给我足够的精度。

这是我的编译堆栈跟踪:

这就是我如何称呼我的程序:

所以执行后,一切都很好,我得到了一个gmon.out文件。我正在执行命令gprof ./bin/mdk-verifier | more,我得到以下结果:

很明显, ModalOperation::checkBranch 的调用次数溢出了......并且通过每次我进入这个函数时进行显示,我确实做了超过 18 个调用......

所以我考虑使用另一个更精确的分析器,我找到了 Google 的GPerfTools

我想使用它,我安装在我的 Ubuntu 上:

  • libgoogle-perftools-dev
  • 谷歌性能工具

并按照教程,他们要求我设置环境变量CPUPROFILE

我做到了,我得到:

我还在-lprofiler我的可执行文件的链接过程中放了,所以我认为一切都很好,我可以开始分析文件中的数据./prof.out

但不幸的是,这个文件没有出现......没有创建任何东西,所以我无法分析任何东西......

有谁知道为什么./prof.out没有创建文件以及为什么分析没有收集数据?

在此先感谢您的帮助 !

此致;

0 投票
1 回答
903 浏览

c++ - 如何使用 gperftools 有条件地分析 C++ 代码?

我正在尝试对回调驱动的系统进行 CPU 分析,并且我只对在回调导致我以某种方式做出反应时进行分析感兴趣?我可以使用 gperftools 来完成这项工作吗?

ProfilerEnable()/ProfilerDisable()似乎很有希望,但标题说这些已被弃用。我什至不确定这些是否可行。

0 投票
2 回答
4517 浏览

c++ - 在 Mac OS X 上使用 gperftools 的问题

关于这个话题,我发现了几个相互矛盾的答案。这篇博文需要 libuwind,但这在 Mac OS X 上不起作用。我包含#include <google/profiler.h>在我的代码中,但是我的编译器 (g++) 找不到该库。我gperftools通过自制软件安装。此外,我发现这个stackoverflow 问题显示了这一点:

然后我运行 pprof 来生成输出:

运行该命令(没有任何先前的步骤)让我得到这个:

为什么它试图访问我机器上的互联网站点和他/她的本地文​​件?

尝试使用 g++ 将 lib profiler 链接为空运行让我:

我查看了手册页、帮助选项文本、官方在线指南、博客文章和许多其他来源。

我现在很困惑。有人可以帮我使用 gperftools 吗?

我与@osgx 对话的结果就是这个脚本。我试着把它清理一下。它也可能包含很多不必要的选项。

0 投票
1 回答
521 浏览

profiling - gperftools 不显示调用图结果

我已经安装了 gperftools 并收集了数据,到目前为止这看起来很合理。我看到一个节点(?)被大量采样 - 但我对该节点的调用者感兴趣 - 我没有看到它们?我也试过 callgrind/kcachegrind,我觉得我错过了什么?这是使用 --text 时的输出片段

所以我有兴趣看到 US_strcpy 的调用者,但我似乎没有?我确实从 kcachegrind 获得了 0x40472984 的漂亮调用图(仍在尝试将其与符号匹配)

0 投票
1 回答
289 浏览

c++ - 在不安装的情况下使用 gperftools/Heaptrack

我正在尝试在 unix 平台上对 C++ 应用程序进行堆分析。我已经尝试过 valgrind 的地块,但它使应用程序非常缓慢并影响应用程序的行为。

我正在寻找其他选项并遇到gperftoolsheaptrack。尽管这些对于我的问题来说是可行的解决方案。但是我在这里有限制,我没有足够的权限来安装这些工具。

有什么方法可以设置 gperftools 或 heaptrack 而无需在 unix 中安装它们?

提前致谢

0 投票
2 回答
725 浏览

c++ - 让 gperftools 与 Rcpp 一起工作

我在这里这里阅读了相关的帖子,并在此处查看了 Dirk Eddelbuettel 的演讲,但我什至无法从 .log 文件中获取 .log 文件gperftools。这是我的R文件,名为Rcpp_practice.R

以下是 的内容eigen.cpp

然后,在终端上(我使用的是 OSX):

我希望看到eigenprof.log坐在我的工作目录中,但我没有。另外,我没有收到我在表单的其他帖子中看到的消息PROFILE: interrupts/evictions/bytes = 012/34/567891

我确认我安装了最新版本gperftools。($ brew upgrade google-perftools给出Error: gperftools 2.5 already installed)。

我错过了什么?

更新

在我修改我的代码以匹配@nrussell's 后,我收到以下错误消息:

sourceCpp如果我以交互方式运行脚本,这将出现在行上。

0 投票
1 回答
1658 浏览

c++ - 我在探查器输出中看到的 __nss_passwd_lookup() 调用是什么?

我正在使用gperftools来分析使用 GCC 5.4.0(使用 -O3)编译的 C++ 应用程序。

代码经过高度优化,所以我在输出中看不到很多分支,但是有一个名为__nss_passwd_lookup()的分支,它需要大量时间:

在此处输入图像描述

我唯一的猜测是它以某种方式与内存分配有关。

操作系统:Ubuntu 16.04 x86_64,内核:4.8。