提问人:moore 提问时间:2/22/2023 最后编辑:moore 更新时间:2/23/2023 访问量:159
为什么 BCC Memleak 会丢失 malloc 信息
why does bcc memleak lose malloc information
问:
我正在使用 bcc-memleak 来定位项目中的内存泄漏。但 top 命令显示 VIRT 在 100 小时内从 100GB 增加到 200GB,RES 从 60GB 增加到 100GB,而 memleak 显示只有 150MB 内存没有释放。
我编译了项目以保持全帧指针,并且我几乎每个调用堆栈都具有出色的分配。(-o 3000 表示仅收集超过 30 年代的内存)-fno-omit-frame-pointer
memleak 命令是(当用 jemalloc 替换 malloc 时,添加memleak -p {pid} -o 30000 -T 10 20
-O /lib64/libjemalloc.so
)
使用 std malloc 和 jemalloc 具有相同的结果。
有人知道如何获取更多信息吗?或其他工具建议检查 Memleak。
我和教授一起尝试过 jemalloc,但它需要太多的 cpu 和内存,所以它没有解决我的问题。也尝试了 LeakSanitizer,但结果仍然只有不到 100MB 的内存泄漏。
BCC & Memleak 项目:https://github.com/iovisor/bcc/blob/master/tools/memleak.py
更新1:
CPPFLAGS=-O2 -Werror=return-type -Werror=uninitialized -fno-omit-frame-pointer -std=c++11 -mavx2 -mf16c
LIBADD=-lhiredis -lworkflow -lopenblas -lpugixml -lboost_regex -lboost_system -discovery -lmemcached -loffdb -lz -llzo2 -lprotobuf -lresolv -lpthread -lfmt -lACE
环境:
- 忆密 v0.24.0
- gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5)
- CentOS Linux 8.2 操作系统
- 内核:Linux 4.18.0-193.28.1.el8_2.x86_64
答: 暂无答案
评论
top
显示操作系统的内存量。brk
sbrk