- 主要观点:jemalloc 内存分配器 2004 年初构思,已公开使用约 20 年,开源软件许可使其可长期使用,但其上游开发已结束。文章介绍了 jemalloc 的发展阶段,包括各阶段的成功与失败亮点及回顾性评论。
关键信息:
- 发展阶段:Lyken 阶段(2004 - 2006 年)、FreeBSD 阶段(2005 - 2006 年)、Firefox 阶段(2007 年)、Facebook 阶段(2009 - 2017 年)、停滞阶段(现)。
- 重要事件:jemalloc 集成到 FreeBSD 后出现碎片问题,后改为使用大小隔离区域;在 Firefox 上的工作及 Mozilla 对上游 jemalloc 的贡献;在 Facebook 推动 jemalloc 的使用及相关开发,如添加
pprof
兼容功能、测试基础设施等,后因公司文化变化导致 jemalloc 发展受限。 - 争议事件:5.0.0 版本移除 Valgrind 支持引发不满,Rust 语言直接将 jemalloc 纳入编译程序导致其被提前移除。
重要细节:
- Lyken 阶段:2004 年开始为科学计算工作,5 月完成手动内存分配器,9 月集成到 FreeBSD,3 月从 Lyken 中移除,后发现系统分配器缺跟踪分配量机制,jemalloc 可通过薄包装实现。
- FreeBSD 阶段:因多处理器计算机过渡,FreeBSD 的 phkmalloc 分配器无并行线程执行规定,jemalloc 被集成,后出现碎片问题,布局算法改为使用大小隔离区域。
- Firefox 阶段:2007 年 Mozilla Firefox 3 临近发布,存在高碎片问题,开始与 Mozilla 合作,将 jemalloc 移植到 Linux 困难,移植到 Windows 更难,Mozilla 对上游 jemalloc 有贡献但基准测试显示分叉版本性能更好。
- Facebook 阶段:2009 年到 Facebook 发现最大障碍是工具支持,jemalloc 开发迁移到 GitHub,增加测试基础设施等功能,受益于 Facebook 内部遥测数据,最后一年组建小团队进行开发维护,离开后团队继续工作,Facebook 基础设施工程减少对核心技术投资后 jemalloc 发展受限。
- 停滞阶段:上游 jemalloc 开发结束,Meta 需求与外部使用不再契合,若重新参与需大量重构,提到 jemalloc 发展中的一些失败,如移除 Valgrind 引起不满、未吸引其他组织主要贡献者等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。