问题标签 [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.
c++ - 使用 gperftools 的堆分析器来分析 libc malloc
我正在尝试分析应用程序以使用不同的分配策略比较其性能。
使用 tcmalloc 时我可以毫无问题地对其进行分析,但是如何使用 libc 的分配函数对其进行分析?实际上,启用 gperftool 的堆分析器需要使用-ltcmalloc
标志¹,但这会导致 tcmalloc 被用作分配策略。
java - 设置 HEAPROFILE 后,jetty 立即退出
我想分析码头的堆外内存使用情况。
所以我使用 gperftools 并将 env 添加到 jetty.sh:
它工作正常
但是当我注释掉HEAPPROFILE
并尝试时service jetty restart(start)
。
登录后
它退出了。
检查错误日志,我发现这是一个“libunwind”错误。
(完整内容:https ://drive.google.com/open?id=1JB3R27Udpdid3FMgnoWQPr516gZsSfc3 )
离我的范围太远了。
我使用gperftools-2.7
with libunwind-1.2.1
(在我使用libunwind-0.99-BETA
相同的结果之前)。
可能很难解决。环境因素太多。
c++ - 过滤堆跟踪数据的大小
我为我的应用程序录制了一个带有 heaptrack 的 *.gz 文件。我想用它来找出使用小分配浪费了多少内存。
现在我的问题是:是否可以过滤由 heaptrack 创建的 gz 或数据文件,以便只保留具有特定最大大小的分配?
问候
windows - TCMALLOC 内存泄漏
在 Windows 上,当我tcmalloc
使用我的代码进行静态绑定时,我看到内存持续增长,但如果我不使用tcmalloc
.
Linux 中不存在此问题。
我已经尝试过标志下面的标志:
当我使用这些变量时,我可以看到内存增长速度很慢,但是在多天的时间里,内存仍在不断增长。
我需要停止记忆增长。
c++ - 在 Jetson TX2 上分析问题 C++。不显示函数名称
我在 Jetson TX2 上分析我的 C++ 代码时遇到问题。分析本身可以工作,但我没有得到函数名称,而是说有一部分是未知的。我用 go 安装了 pprof,它可以在我的 Raspberry Pi 上运行,我猜 id 做了正确的步骤。例如我的 Jetson 和我的 Pi 之间的区别:
我在 Jetson 上得到的结果是:
在 Pi 上,我得到:
如您所见,分析我使用的 OpenCV 函数工作正常,但我自己的代码称为未知。
我在编译时启用了 -g 标志。我使用以下行来分析我的代码(makefile)
...当我使用 google-pprof 而不是 pprof 时,我没有得到未知的但只有地址(如 0x0000007f7a090498)。我试图解决错误但没有成功。我尝试了很多,猜想这是将地址耦合到函数名的问题。当我尝试 addr2line 时,我得到:
我希望有一个人可以帮助我。
cross-compiling - 如何指定主机参数以在 Bazel 中配置脚本?
我正在尝试使用https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux上的 Linaro 工具链在 lubuntu 16.04 LTS 上为 aarch64 变体交叉编译特使(使用 Bazel)-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
我已经为 bazel 编写了一个自定义工具链,但 gperftools 无法构建并出现以下错误:
在我看来,主机系统类型应该是 aarch64。
我想知道如何在 bazel 中为编译 gperftools 的配置脚本指定 --host 参数。我的工具链文件也完全有可能是错误的,因为这是我第一次尝试编写一个。
我的顶级构建包含
我的工具链目录包含一个 BUILD 文件
和一个名为 cc_toolchain_config.bzl 的文件
我一直在使用这个构建命令
macos - 使用 gperftools/pprof 时没有函数名
我一直在尝试让 gperftools CPU 分析在我的程序上工作。
我遇到了一个问题,当 pprof 报告时,我的程序中的所有函数名称都是指针地址。烦人的是,我链接的库中的大多数函数名都是可读的,但我的程序文件中没有。下面的例子。
我需要做什么才能让我的函数名称包含在 pprof 输出中?
如果有帮助,这就是达到上述目的的过程对我来说是怎样的。我使用以下选项构建我的程序
我通过运行使用 gprof 启用 CPU 分析
DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib CPUPROFILE=hmiss.prof ./hmiss
然后我跑pprof --text ./hmiss hmiss.prof
从一个类似问题的答案中,我认为可能包括调试符号可能会在其中获得名称,但仅使用 -g 构建我的程序似乎没有帮助。此外,删除 -O2 标志也无济于事。
qt - __GI___poll 在我的个人资料中是什么意思?
我正在使用 gperftools 来分析我的 C++ 代码,最大的节点是__GI___poll
. 它由低级 Qt 和 OpenCL 代码(主要是 Qt)调用,因此从我自己的代码中删除了几个步骤。我的猜测是,这只是一个通用的“等待事件”功能,但我的搜索努力却白费了。
这个函数是什么,我的代码在这里花费了这么多时间,它可以说明什么?
java - 如何在 Java 应用程序上使用 gperftools?
我从 gperftools 的 wiki 和一些博客中学会了在我的服务器上安装 gperftools。命令如下:
现在我有两个问题: 1.如何确定我已经成功安装了 gperftools?2.如何开始对我的 Java 应用程序进行堆检查?
我尝试了几种方法,但它们似乎都是错误的。谢谢!
profiling - _Rf_cons 和 _Rf_allocVector3 是什么?
我正在开发一个使用 Rcpp 和 RcppArmadillo 的 R 包,并且我正在尝试分析包中的一个主要功能以改进其运行时。
我正在使用Dirk 推荐的gperftools,具体如本文所述。前两个函数调用(按分析样本的数量)被调用_Rf_cons
和_Rf_allocVector3
。
有谁知道这些函数是什么,以及在 Rcpp 代码中可以从哪里调用它们?我无法通过谷歌或在 Rcpp GitHub 存储库中找到对它们的任何引用。
谢谢!