diff --git a/configure.ac b/configure.ac index e086019f..a9919452 100644 --- a/configure.ac +++ b/configure.ac @@ -371,6 +371,7 @@ esac AC_CHECK_HEADERS_ONCE([alloca.h syslog.h stdatomic.h]) AC_CHECK_HEADER([sys/mman.h], [AC_DEFINE([HAVE_MMAP], [1], [Define to 1 if mmap() is available.])], have_mman=no) AC_CHECK_FUNC([aligned_alloc], [AC_DEFINE([HAVE_ALIGNED_ALLOC], [1], [Define to 1 if aligned_alloc() is available.])], have_aligned_alloc=no) +AC_CHECK_HEADER([malloc.h], [AC_DEFINE([HAVE_MALLOC_H], [1], [Define to 1 if malloc.h is available.])], have_malloc_h=no) AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#include ]) if test "$have_aligned_alloc" = "no" && test "$have_mman" = "no" ; then diff --git a/sysdep/unix/alloc.c b/sysdep/unix/alloc.c index e3a96f8d..74618dfb 100644 --- a/sysdep/unix/alloc.c +++ b/sysdep/unix/alloc.c @@ -18,6 +18,10 @@ #include #include +#ifdef HAVE_MALLOC_H +# include +#endif + #ifdef HAVE_MMAP # include #endif @@ -501,6 +505,11 @@ page_dump(struct dump_request *dreq) void resource_sys_init(void) { +#ifdef HAVE_MALLOC_H + if (!mallopt(M_ARENA_MAX, 1)) + log(L_WARN "Failed to disable multiple malloc arenas, memory consumption may skyrocket."); +#endif + #ifdef CONFIG_DISABLE_THP /* Disable transparent huge pages, they do not work properly with madvice(MADV_DONTNEED) */ if (prctl(PR_SET_THP_DISABLE, (unsigned long) 1, (unsigned long) 0, (unsigned long) 0, (unsigned long) 0) < 0)