mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-05 19:52:14 +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 */
|
/* ask the allocator to trim memory pools */
|
||||||
static void trim_all_pools(void)
|
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 defined(HA_HAVE_MALLOC_TRIM)
|
||||||
if (using_default_allocator)
|
if (using_default_allocator)
|
||||||
malloc_trim(0);
|
malloc_trim(0);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if we're using the same allocator as the one that provides
|
/* check if we're using the same allocator as the one that provides
|
||||||
|
Loading…
Reference in New Issue
Block a user