发布于 2017-07-06 15:22:37 | 177 次阅读 | 评论: 0 | 来源: 网友投递
jemalloc 内存分配管理
jason认为phkmalloc(FreeBSD’s previous malloc implementation by Kamp (1998))没有考虑多处理器的情况,因此在多线程并发下性能低下(事实如此),而jemalloc适合多线程下内存分配管理。
Jemalloc 5.0.1 已发布,jemalloc 是一个通用的 malloc(3)实现,它强调了分段回避和可伸缩并发支持。jemalloc 在 2005 年首次作为 FreeBSD libc 分配器使用,2010年,jemalloc 的功能延伸到如堆分析和监控/调优等。现代的 jemalloc 版本依然集成在 FreeBSD 中。
更新内容:
Update decay->nunpurged
before purging, in order to avoid potential update races and subsequent incorrect purging volume.
Only abort on dlsym(3)
error if the failure impacts an enabled feature (lazy locking and/or background threads). This mitigates an initialization failure bug for which we still do not have a clear reproduction test case.
Modify tsd management so that it neither crashes nor leaks if a thread's only allocation activity is to call free()
after TLS destructors have been executed. This behavior was observed when operating with GNU libc, and is unlikely to be an issue with other libc implementations.
Mask signals during background thread creation. This prevents signals from being inadvertently delivered to background threads.
Avoid inactivity checks within background threads, in order to prevent recursive mutex acquisition.
Fix extent_grow_retained() to use the specified hooks when the arena.<i>.extent_hooks
mallctl is used to override the default hooks.
Add missing reentrancy support for custom extent hooks which allocate.
Post-fork(2)
, re-initialize the list of tcaches associated with each arena to contain no tcaches except the forking thread's.
Add missing post-fork(2)
mutex reinitialization for extent_grow_mtx
. This fixes potential deadlocks after fork(2)
.
Enforce minimum autoconf version (currently 2.68), since 2.63 is known to generate corrupt configure scripts.
Ensure that the configured page size (--with-lg-page
) is no larger than the configured huge page size (--with-lg-hugepage
).
下载地址: