V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Buffer2Disk
V2EX  ›  问与答

关于 tcmalloc 与 jemalloc

  •  
  •   Buffer2Disk · 2018-11-19 15:13:29 +08:00 · 7404 次点击
    这是一个创建于 2181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    坛子里面有没有深度使用过这两个内存管理器的大佬? 最近一直在做内存优化,具体场景如下: 业务系统在默认使用 ptmalloc 情况下,内存持续增长; 业务系统线程数恒定不变,基本上不涉及频繁创建与销毁。

    分别使用三种内存管理器 1 天半以后,观察内存增长情况如下:

    (1) ptmalloc : 内存增长较缓慢,但是每次增加的内存都很多,并且释放内存返还给操作系统的情况很少

    (2) tcmalloc : 内存增长很快,而且每次增长的数值都很小,属于短平快的类型,同样释放内存返还给操作系统的情况很少

    (3) jemalloc : 初始情况下内存增长非常快,数值很大,但是到了一定量以后,内存维持在一定量上下浮动,释放内存返还给操作系统的情况很多

    有没有人能分析分析

    9 条回复    2018-11-20 10:21:43 +08:00
    zk8802
        1
    zk8802  
       2018-11-19 15:27:35 +08:00 via iPhone
    据说 jemalloc 在面对内存碎片时比另外两个的表现好得多。你可以分析一下业务系统的内存申请与释放的情况,看看是不是容易导致堆内存碎片的出现。
    Buffer2Disk
        2
    Buffer2Disk  
    OP
       2018-11-19 15:49:28 +08:00
    @zk8802 应该是的,我感觉 tcmalloc 内存一直在增长 4KB 的倍数,就没释放过
    P0P
        3
    P0P  
       2018-11-19 16:55:24 +08:00
    tcmalloc 可以手动调用方法还给操作系统内存,其他几个就不清楚了
    trait
        4
    trait  
       2018-11-19 17:04:55 +08:00
    jemalloc 上个月之前一直是 Rust 语言的默认管理器,因为跨平台的原因才从语言本身移除改为 OS 默认( rust 支持用户自己挂载管理器)
    zk8802
        5
    zk8802  
       2018-11-19 19:39:27 +08:00 via iPhone
    @Buffer2Disk 先确定没有内存泄漏的情况发生。在选择合适的内存管理器的同时,也要记得优化一下业务系统的内存分配。内存碎片往往可以通过创建 sub heap 或者更换内存管理器的方法解决。
    gulucn
        6
    gulucn  
       2018-11-19 21:53:38 +08:00
    tcmalloc 需要释放内存还给操作系统可以尝试 更改 https://gperftools.github.io/gperftools/tcmalloc.html 的 TCMALLOC_RELEASE_RATE 测试一下
    Buffer2Disk
        7
    Buffer2Disk  
    OP
       2018-11-20 10:18:45 +08:00
    @zk8802 业务系统的内存泄漏优化了一个月了,感觉应该没啥了,主要就是进程的内存随着时间一直增长,所以才想着更换内存管理器
    Buffer2Disk
        8
    Buffer2Disk  
    OP
       2018-11-20 10:21:30 +08:00
    @gulucn 原来是这样,试了下,默认参数情况下,jemalloc 内存释放给系统的速度应该比 tcmalloc 要快,可能是 2 者的策略不同。
    Buffer2Disk
        9
    Buffer2Disk  
    OP
       2018-11-20 10:21:43 +08:00
    网上说 jemalloc 管理内存碎片方面比 tcmalloc 更好,这个还没感受出来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:51 · PVG 03:51 · LAX 11:51 · JFK 14:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.