searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

jemalloc-profile内存分析

2024-08-29 09:42:19
34
0

1. 几种malloc对比:

ptmalloc: glibc的内存分配管理(linux默认)

内存容易产生碎片,ptmalloc在整理合并的时候也要对arena做加锁操作。在线程多的时候,锁的开销就会增大

tcmalloc: google的内存分配管理

tcmalloc在内存分配的时候使用自旋锁,在锁冲突严重的时候导致CPU飙升

jemalloc: BSD的内存分配管理 (facebook)

jemalloc最大的优势还是其强大的多核/多线程分配能力,多线程下加锁大大减少

2. 如何判断服务是否使用jemalloc

 perf top -g -p 进程id
 #查看 malloc/free 来自于libc还是服务本身

注:jemalloc会替换mallocfree的函数 但是不会替换memcpy

 

3. 如何利用jemalloc-profile 来观测程序的内存分配行为

  • 编译jemalloc静态库,编译条件中开启profile模块
  • 设置环境变量,服务启动时默认不开启profile 

export MALLOC_CONF="prof:true,prof_active:false"

  • 当需要使用profile时,可以动态打开profile功能

mallctl("prof.active", nullptr, nullptr, (void *)&active, sizeof(active));

  • 可以通过定时器或动态调用的方式生成内存堆栈文件

mallctl("prof.dump", nullptr, nullptr, &c_str, sizeof(const char *));

  • 可以通过jeprof和图形化工具来分析heap文件
    • 安装图形化工具:

        yum install graphviz
        yum install ghostscript

    • 通过jeprof分析堆栈

jeprof MediaServer jemalloc2.heap

top

    • 对比两个heap文件,并将分析结果导出为pdf文件

jeprof --show_bytes -pdf Server --base jeprof.84552.2.i2.heap jeprof.84552.0.i0.heap >result.pdf

    • 更多格式:

 

 

0条评论
0 / 1000
李****秀
4文章数
0粉丝数
李****秀
4 文章 | 0 粉丝
李****秀
4文章数
0粉丝数
李****秀
4 文章 | 0 粉丝
原创

jemalloc-profile内存分析

2024-08-29 09:42:19
34
0

1. 几种malloc对比:

ptmalloc: glibc的内存分配管理(linux默认)

内存容易产生碎片,ptmalloc在整理合并的时候也要对arena做加锁操作。在线程多的时候,锁的开销就会增大

tcmalloc: google的内存分配管理

tcmalloc在内存分配的时候使用自旋锁,在锁冲突严重的时候导致CPU飙升

jemalloc: BSD的内存分配管理 (facebook)

jemalloc最大的优势还是其强大的多核/多线程分配能力,多线程下加锁大大减少

2. 如何判断服务是否使用jemalloc

 perf top -g -p 进程id
 #查看 malloc/free 来自于libc还是服务本身

注:jemalloc会替换mallocfree的函数 但是不会替换memcpy

 

3. 如何利用jemalloc-profile 来观测程序的内存分配行为

  • 编译jemalloc静态库,编译条件中开启profile模块
  • 设置环境变量,服务启动时默认不开启profile 

export MALLOC_CONF="prof:true,prof_active:false"

  • 当需要使用profile时,可以动态打开profile功能

mallctl("prof.active", nullptr, nullptr, (void *)&active, sizeof(active));

  • 可以通过定时器或动态调用的方式生成内存堆栈文件

mallctl("prof.dump", nullptr, nullptr, &c_str, sizeof(const char *));

  • 可以通过jeprof和图形化工具来分析heap文件
    • 安装图形化工具:

        yum install graphviz
        yum install ghostscript

    • 通过jeprof分析堆栈

jeprof MediaServer jemalloc2.heap

top

    • 对比两个heap文件,并将分析结果导出为pdf文件

jeprof --show_bytes -pdf Server --base jeprof.84552.2.i2.heap jeprof.84552.0.i0.heap >result.pdf

    • 更多格式:

 

 

文章来自个人专栏
音视频后端分享
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0