mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-11 14:05:12 +00:00
MEDIUM: pool: support purging jemalloc arenas in trim_all_pools()
In the case of Linux/glibc, falling back to malloc_trim if jemalloc had not been detected beforehand.
This commit is contained in:
parent
ed232148a7
commit
d450ff636c
17
src/pool.c
17
src/pool.c
@ -48,10 +48,23 @@ static int(*my_mallctl)(const char *, void *, size_t *, void *, size_t) = NULL;
|
||||
/* ask the allocator to trim memory pools */
|
||||
static void trim_all_pools(void)
|
||||
{
|
||||
if (my_mallctl) {
|
||||
unsigned int i, narenas = 0;
|
||||
size_t len = sizeof(narenas);
|
||||
|
||||
if (my_mallctl("arenas.narenas", &narenas, &len, NULL, 0) == 0) {
|
||||
for (i = 0; i < narenas; i ++) {
|
||||
char mib[32] = {0};
|
||||
snprintf(mib, sizeof(mib), "arena.%u.purge", i);
|
||||
(void)my_mallctl(mib, NULL, NULL, NULL, 0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
#if defined(HA_HAVE_MALLOC_TRIM)
|
||||
if (using_default_allocator)
|
||||
malloc_trim(0);
|
||||
if (using_default_allocator)
|
||||
malloc_trim(0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* check if we're using the same allocator as the one that provides
|
||||
|
Loading…
Reference in New Issue
Block a user