summaryrefslogtreecommitdiffstats
path: root/src/arena.c
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2016-11-22 07:23:03 (GMT)
committerJason Evans <jasone@canonware.com>2016-12-27 01:59:42 (GMT)
commit411697adcda2fd75e135cdcdafb95f2bd295dc7f (patch)
tree022309449fe560f680a218c429db854e77a7c392 /src/arena.c
parentc1baa0a9b7b05ebf98221dc7deb12c28e170a399 (diff)
downloadjemalloc-411697adcda2fd75e135cdcdafb95f2bd295dc7f.zip
jemalloc-411697adcda2fd75e135cdcdafb95f2bd295dc7f.tar.gz
jemalloc-411697adcda2fd75e135cdcdafb95f2bd295dc7f.tar.bz2
Use exponential series to size extents.
If virtual memory is retained, allocate extents such that their sizes form an exponentially growing series. This limits the number of disjoint virtual memory ranges so that extent merging can be effective even if multiple arenas' extent allocation requests are highly interleaved. This resolves #462.
Diffstat (limited to 'src/arena.c')
-rw-r--r--src/arena.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/arena.c b/src/arena.c
index 73fea52..c358704 100644
--- a/src/arena.c
+++ b/src/arena.c
@@ -1686,6 +1686,9 @@ arena_new(tsdn_t *tsdn, unsigned ind)
arena->extent_hooks = (extent_hooks_t *)&extent_hooks_default;
+ if (!config_munmap)
+ arena->extent_grow_next = psz2ind(HUGEPAGE);
+
ql_new(&arena->extent_cache);
if (malloc_mutex_init(&arena->extent_cache_mtx, "arena_extent_cache",
WITNESS_RANK_ARENA_EXTENT_CACHE))