问题标签 [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.

0 投票
1 回答
372 浏览

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 堆泄漏检查”

0 投票
1 回答
1161 浏览

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 说:

0 投票
2 回答
465 浏览

cpython - gperftools 无法识别文件

有没有办法避免 Google 性能工具将文件列为“??:?”,即无法找到包含它报告的功能的文件?如何确定哪个库包含被调用的函数?

我的目标是能够在具有许多已编译 C 扩展模块的 python 包中分析 C 代码。在上面的玩具示例中,我将如何追踪“dtrsm_”的定义位置?如果有多个加载的库包含具有相同名称的函数,有没有办法判断正在调用哪个版本?

0 投票
1 回答
689 浏览

c++ - 为什么使用 tcmalloc 链接会减少 500MB 的内存使用量?

在我的程序中,我创建了 5 个向量,每个向量都有 100 万个元素。当我使用 O3 优化编译我的程序时,运行时大约需要 2 GB。但是,如果我使用 O3 优化进行编译并链接到 google-perf 提供的 tcmalloc 库,则最大驻留集大小仅需要 1.5 GB。有人可以向我解释为什么会这样吗?链接 tcmalloc 总是比链接 glibc malloc 更好吗?

0 投票
1 回答
363 浏览

c++ - 如何获取所有类的 tcmalloc 静态

我正在为我的应用程序使用 tcmalloc lib,我想获取所有类信息,例如该类的对象数量、总大小等。

有一个函数 DumpStats 可以为我们提供所有信息(类信息、页堆信息、总内存分配摘要等)。此 API 将以字符串形式提供信息,我不想解析它来获取我想要的信息。

是否有类似的 API 来获取所有类(桶)信息。如果问题不清楚,请告诉我。

0 投票
1 回答
1746 浏览

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 小时内长时间运行(应用程序收到来自客户端的消息),但无法显示输出。我认为因为我的应用程序使用了共享库,所以这里有些问题,完全不清楚这一点。

你能解释一下发生了什么吗?有什么解决办法吗?

非常感谢,

0 投票
2 回答
1168 浏览

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)关于如何提高性能的任何建议?

0 投票
1 回答
495 浏览

c++ - google-pprof 显示来自 ARM 的结果

我正在使用谷歌性能工具来分析我的程序。在 arm 设备 Cortex A9 上运行程序。

接下来在主机 linux-mint 上加载分析结果。并运行 google-pprof

但是我已经损坏了结果

所有库都安装在工具链库中。如何设置 sysroot 路径?并显示方法名称而不是地址?

0 投票
2 回答
4936 浏览

c++ - 在 CentOS 上安装 tcmalloc

tcmalloc使用以下命令在 CentOS 上安装:

并且它正确地进行。但我在 中找不到任何已安装的 perftools 库/usr/lib/,因此无法设置LD_PRELOAD变量。

然后,当我尝试用 flag 编译时-ltcmalloc,编译器没有识别它,这很有意义。

我还应该指定tcmalloc在 CentOS 上使用什么?谢谢。

0 投票
1 回答
273 浏览

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 链接到我的项目不是一种选择。