jemalloc Overview
主要参考:
[1] Facebook对jemalloc的优化:Scalable memory allocation using jemalloc
[2] jemalloc原始论文:A Scalable Concurrent malloc(3) Implementation for FreeBSD
备注:[1]相对[2]较新,代表了jemalloc更新的研究成果,和更好的性能。当两者冲突时,以[1]为准。
目标与成果
对应用程序,提供一个可扩展的并行的内存分配器。当处理器的个数增加时,对多线程的内存分配有足够的扩展性。对多线程应用程序,相比于其他的内存分配其,有着更好的性能。
设计理念
关于内存碎片:内存碎片分为内部碎片和外部碎片。内部碎片衡量由于单次分配产生的未使用的前面或后面浪费的空间。外部碎片衡量由虚拟内存系统支持的、但未直接被程序使用的内存。理想状态是两种碎片都很小,但是内存分配器需要在两者之间做出权衡。
过去十年来RAM变得价格很便宜、量也大了,所以phkmalloc特别地优化来减少总的内存页工作集(working set),jemalloc更关心缓存局部性,引申开来,也是CPU缓存行(cache line)的工作集。换页(paging)仍然是性能骤降的潜在原因,但是更常见的问题是,相比于CPU的性能,从