问题标签 [google-perftools]
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++ - 为什么 tcmalloc 不打印通过 dlopen 提供的函数名称
我有下一个项目:main.cpp
共享.cpp:
和生成文件:
我使用 tcmalloc 调试这个测试程序,它动态加载 libshared.so:foo 并执行 it.run 命令: LD_PRELOAD=/usr/local/lib/libtcmalloc.so HEAPCHECK=normal ./a.out
1 最大的泄漏:
- 使用本地文件 ./a.out。
- 从以下位置分配的 1 个对象中泄漏 40 个字节:
- @ 7fe3460bd9ba 0x00007fe3460bd9ba
- @ 400b43 主要
- @ 7fe346c33ec5 __libc_start_main
- @ 400999 _开始
- @0 _init
为什么我在 foo 函数中得到地址 0x00007fe3460bd9ba 而不是 line?请帮忙
Ps 我尝试将 gdb 与 LD_PRELOAD=.../tcmalloc.so 一起使用,但我得到:“有人正在 ptrace() 向我们发送消息;将自行关闭关闭 perftools 堆泄漏检查”
c++ - 当我使用共享库编译和运行此程序时,为什么 tcmalloc 会失败?
代码类似于此处的代码: Why tcmalloc don't print function name, which provides via dlopen
生成文件:
- 全部:
- g++ -fPIC -g -c shared.cpp -ltcmalloc
- g++ -shared -o shared_libs/libshared.so -g shared.o -ltcmalloc
- g++ -L shared_libs/ -g main.cpp -ldl -ltcmalloc
当我执行我的程序时:
带有核心文件的 gdb 说:
cpython - gperftools 无法识别文件
有没有办法避免 Google 性能工具将文件列为“??:?”,即无法找到包含它报告的功能的文件?如何确定哪个库包含被调用的函数?
我的目标是能够在具有许多已编译 C 扩展模块的 python 包中分析 C 代码。在上面的玩具示例中,我将如何追踪“dtrsm_”的定义位置?如果有多个加载的库包含具有相同名称的函数,有没有办法判断正在调用哪个版本?
c++ - 为什么使用 tcmalloc 链接会减少 500MB 的内存使用量?
在我的程序中,我创建了 5 个向量,每个向量都有 100 万个元素。当我使用 O3 优化编译我的程序时,运行时大约需要 2 GB。但是,如果我使用 O3 优化进行编译并链接到 google-perf 提供的 tcmalloc 库,则最大驻留集大小仅需要 1.5 GB。有人可以向我解释为什么会这样吗?链接 tcmalloc 总是比链接 glibc malloc 更好吗?
c++ - 如何获取所有类的 tcmalloc 静态
我正在为我的应用程序使用 tcmalloc lib,我想获取所有类信息,例如该类的对象数量、总大小等。
有一个函数 DumpStats 可以为我们提供所有信息(类信息、页堆信息、总内存分配摘要等)。此 API 将以字符串形式提供信息,我不想解析它来获取我想要的信息。
是否有类似的 API 来获取所有类(桶)信息。如果问题不清楚,请告诉我。
google-perftools - Google 性能工具 (gperftools) 上的 CPU 分析器 - 使用没有输出问题的共享库进行处理
我在服务器上有一个进程。我的进程使用共享库,在 linux 后台运行。我在 gperftool 中使用 CPU 分析器来检查函数。步骤如下:
1.在我的应用程序中,
2. CPUPROFILE_FREQUENCY=1000000 LD_LIBRARY_PATH=/usr/local/lib/libprofiler.so CPUPROFILE=dump.txt ./a.out
3. pprof --text a.out dump.txt
我检查了我在其他进程上的步骤(不使用共享库),没关系。
问题: dump.txt 文件只是保持不变的文件大小(8kb 或 9kb),尽管在 2 或 3 小时内长时间运行(应用程序收到来自客户端的消息),但无法显示输出。我认为因为我的应用程序使用了共享库,所以这里有些问题,完全不清楚这一点。
你能解释一下发生了什么吗?有什么解决办法吗?
非常感谢,
google-bigquery - Google BigQuery DML - 执行更新和删除时性能缓慢
我运行了一些 BigQuery DML 测试以更好地了解 BigQuery DML 功能的性能。到目前为止,这里有一些初步的观察结果:1)在一个非常小的表(30K+ 记录)中只更新几条记录时性能很慢
输出:- 2 行受影响(表中的记录数:33176)- 查询完成(经过 4.5 秒,已处理 621 KB)
2) 从小表中只删除几条记录时性能非常慢
SQL:
输出:-2 行受影响。- 查询完成(经过 162.6 秒,已处理 1.21 MB) - 约 3 分钟
问题: 1)这些是已知的行为吗?2)关于如何提高性能的任何建议?
c++ - google-pprof 显示来自 ARM 的结果
我正在使用谷歌性能工具来分析我的程序。在 arm 设备 Cortex A9 上运行程序。
接下来在主机 linux-mint 上加载分析结果。并运行 google-pprof
但是我已经损坏了结果
所有库都安装在工具链库中。如何设置 sysroot 路径?并显示方法名称而不是地址?
c++ - 在 CentOS 上安装 tcmalloc
我tcmalloc
使用以下命令在 CentOS 上安装:
并且它正确地进行。但我在 中找不到任何已安装的 perftools 库/usr/lib/
,因此无法设置LD_PRELOAD
变量。
然后,当我尝试用 flag 编译时-ltcmalloc
,编译器没有识别它,这很有意义。
我还应该指定tcmalloc
在 CentOS 上使用什么?谢谢。
c++ - 从源安装 tcmalloc 到没有 bazel 的链接?
我想从源代码安装 tcmalloc。
我在centos8上。我会从 yum 安装,但看不到任何google-perf
可用的gperf
类型。(我确实这样做了。)yum check-update
tcmalloc github上的说明确实很简单。安装bazel
(检查)。然后bazel test //tcmalloc/...
在<projectroot>/tcmalloc
目录中运行。然后,它声称,“恭喜!你已经安装了 TCMalloc”!
好的 tcmalloc 团队,爱你们,但是......我认为我们的定义install
是不同的。在这方面,我在其他地方或任何地方都看不到任何libtcmalloc
可用的东西。/usr/lib/
/usr/lib64/
如何获得这个 bazel 野兽输出的漂亮、简单、旧的共享库?如上所述通过 bazel 链接到我的项目不是一种选择。