From b77b34df968d610d7d26b0671f4375a072b39943 Mon Sep 17 00:00:00 2001 From: daanx Date: Mon, 23 Dec 2024 17:10:34 -0800 Subject: [PATCH] double arena per 4; large page objects 1/8 of large page size --- include/mimalloc/types.h | 2 +- src/arena.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mimalloc/types.h b/include/mimalloc/types.h index 72c8d0a7..53c543d0 100644 --- a/include/mimalloc/types.h +++ b/include/mimalloc/types.h @@ -324,7 +324,7 @@ typedef struct mi_page_s { // (Except for large pages since huge objects are allocated in 4MiB chunks) #define MI_SMALL_MAX_OBJ_SIZE ((MI_SMALL_PAGE_SIZE-MI_PAGE_INFO_SIZE)/8) // < 11 KiB #define MI_MEDIUM_MAX_OBJ_SIZE ((MI_MEDIUM_PAGE_SIZE-MI_PAGE_INFO_SIZE)/8) // < 128 KiB -#define MI_LARGE_MAX_OBJ_SIZE ((MI_LARGE_PAGE_SIZE-MI_PAGE_INFO_SIZE)/4) // < 1 MiB +#define MI_LARGE_MAX_OBJ_SIZE ((MI_LARGE_PAGE_SIZE-MI_PAGE_INFO_SIZE)/8) // < 1 MiB #define MI_LARGE_MAX_OBJ_WSIZE (MI_LARGE_MAX_OBJ_SIZE/MI_SIZE_SIZE) diff --git a/src/arena.c b/src/arena.c index b2113ec0..bc88acf3 100644 --- a/src/arena.c +++ b/src/arena.c @@ -280,7 +280,7 @@ static bool mi_arena_reserve(mi_subproc_t* subproc, size_t req_size, bool allow_ if (arena_count >= 1 && arena_count <= 128) { // scale up the arena sizes exponentially every 4 entries - const size_t multiplier = (size_t)1 << _mi_clamp(arena_count/2, 0, 16); + const size_t multiplier = (size_t)1 << _mi_clamp(arena_count/4, 0, 16); size_t reserve = 0; if (!mi_mul_overflow(multiplier, arena_reserve, &reserve)) { arena_reserve = reserve;