diff options
Diffstat (limited to 'vespamalloc/src/vespamalloc/malloc/threadlist.hpp')
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/threadlist.hpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/vespamalloc/src/vespamalloc/malloc/threadlist.hpp b/vespamalloc/src/vespamalloc/malloc/threadlist.hpp index 743090a4e12..e22b93c48fe 100644 --- a/vespamalloc/src/vespamalloc/malloc/threadlist.hpp +++ b/vespamalloc/src/vespamalloc/malloc/threadlist.hpp @@ -2,9 +2,14 @@ #pragma once #include "threadlist.h" +#include <malloc.h> namespace vespamalloc { +namespace { + const char * VESPA_MALLOC_MMAP_THRESHOLD = "VESPA_MALLOC_MMAP_THRESHOLD"; +} + template <typename MemBlockPtrT, typename ThreadStatT> ThreadListT<MemBlockPtrT, ThreadStatT>::ThreadListT(AllocPool & allocPool, MMapPool & mmapPool) : _isThreaded(false), @@ -13,8 +18,14 @@ ThreadListT<MemBlockPtrT, ThreadStatT>::ThreadListT(AllocPool & allocPool, MMapP _allocPool(allocPool), _mmapPool(mmapPool) { + const char * mmapThresholdS = getenv(VESPA_MALLOC_MMAP_THRESHOLD); + int mmapThreshold = (mmapThresholdS != nullptr) + ? strtol(mmapThresholdS, nullptr, 0) + : MMAP_LIMIT_DEFAULT; for (size_t i = 0; i < getMaxNumThreads(); i++) { - _threadVector[i].setPool(_allocPool, _mmapPool); + auto & thread = _threadVector[i]; + thread.setPool(_allocPool, _mmapPool); + thread.mallopt(M_MMAP_THRESHOLD, mmapThreshold); } } |