首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCmalloc CPUPROFILE没有输出

TCmalloc CPUPROFILE没有输出
EN

Stack Overflow用户
提问于 2022-03-15 08:00:16
回答 1查看 140关注 0票数 0

我目前对谷歌的用户级内存分配器和TCmalloc感兴趣。

我看到了页面,它显示了比较PTmalloc2和TCmalloc的一些评估。

我想在我的环境中重建那个实验。

因此,我从这里的官方引用中安装了这里

并安装golang,以便使用对此命令调用“pprof”的分析工具。

代码语言:javascript
复制
sudo snap install --classic go 

然后,安装google-pprof工具。

代码语言:javascript
复制
go install github.com/google/pprof@latest

以上命令从这里获取

最后,我刚刚用Tensorflow MNIST python代码测试了LD_PRELOAD

代码语言:javascript
复制
   LD_PRELOAD=/usr/lib/libtcmalloc.so.4 python3 MNIST.py

它起作用了。

和生成的堆配置文件二进制文件(.heap)

代码语言:javascript
复制
LD_PRELOAD=/usr/lib/libtcmallo.so.4 HEAPPROFILE=log python3 MNIST.py

它也很管用。

生成的.heap文件

使用google进行分析也是有效的。

并在下面的代码中尝试了CPUPROFILE

代码语言:javascript
复制
LD_PRELOAD=/usr/lib/libtcmallo.so.4 CPUPROFILE=cpu python3 MNIST.py

它没有起作用。没有输出。

我遗漏了什么?

-my system-

Ubuntu 20.04.1LTS x86-64 5.13.0-35

gcc/g++:9.4.0

CPU: Intel i9-12900 i9

内存:32

感谢您的关注。

我期待着任何答复。

EN

回答 1

Stack Overflow用户

发布于 2022-03-16 11:20:11

我从网站上找到了我错过的东西!

可执行文件必须通过-lprofiler选项链接。

然后,我用LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtprofiler.so来连接

没有构建的共享库。

整条命令

代码语言:javascript
复制
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc.so:/usr/lib/x86_64-linux-gnu/libprofiler.so CPUPROFILE=tcmalloc_python.prof python3 MNIST.py

(使用多个库时必须与:__(colon)分离)

如果遇到"ERROR: ld.so: object LD_PRELOAD无法预加载(不能打开共享对象文件):忽略“消息,则必须在该路径中不存在库文件。

所以,换一种方式重新安装pprof就行了。

试一试

代码语言:javascript
复制
sudo apt install google-pprof-dev 

代码语言:javascript
复制
sudo apt-get install golang-github-google-pprof-dev

然后,重试上面的命令(LD_PRELOAD~)。看起来不错。

引用自这里

在我的例子中,它是有效的。

训练完成后,生成一些.prof文件!

结果

但是,pprof不适用于python代码(只有c/c++可执行文件)。

我会想办法的。(有什么想法吗?)

pprof结果

因此,我从这里找到了一些测试代码,并构建了一个可执行文件。

然后尝试了pprof,它起作用了!(pprof手册)

结果(成功)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71478754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档