diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-11 07:44:24 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-11 07:44:24 +0000 |
commit | e7a5599c2fda0ed779d5c9a11dd8d1f2f2e47567 (patch) | |
tree | eb5b2b1aa044fd3455ccadd8c65978e3bef96a75 /vespamalloc | |
parent | 631c539a74a1500b7956071e1ccf375e45ceca7b (diff) |
Add madvise(buf, len, MADV_HUGEPAGE) call to signal that you strongly prefer huge pages.
This will make a difference if /sys/kernel/mm/transparent_hugepage/enabled has been set to [madvise], and not [always].
Diffstat (limited to 'vespamalloc')
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/mmappool.cpp | 3 | ||||
-rw-r--r-- | vespamalloc/src/vespamalloc/util/osmem.cpp | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/vespamalloc/src/vespamalloc/malloc/mmappool.cpp b/vespamalloc/src/vespamalloc/malloc/mmappool.cpp index eadd5aee337..1fb6aa74af9 100644 --- a/vespamalloc/src/vespamalloc/malloc/mmappool.cpp +++ b/vespamalloc/src/vespamalloc/malloc/mmappool.cpp @@ -64,6 +64,9 @@ MMapPool::mmap(size_t sz) { } } #ifdef __linux__ + if (madvise(buf, sz, MADV_HUGEPAGE) != 0) { + // Just an advise, not everyone will listen... + } if (sz >= _G_bigBlockLimit) { if (madvise(buf, sz, MADV_DONTDUMP) != 0) { std::error_code ec(errno, std::system_category()); diff --git a/vespamalloc/src/vespamalloc/util/osmem.cpp b/vespamalloc/src/vespamalloc/util/osmem.cpp index e0cfbc36938..2cb0eb78ad2 100644 --- a/vespamalloc/src/vespamalloc/util/osmem.cpp +++ b/vespamalloc/src/vespamalloc/util/osmem.cpp @@ -214,6 +214,9 @@ MmapMemory::getBasePages(size_t len, int mmapOpt, int fd, size_t offset) ok = (mem == wanted); } if (mem != MAP_FAILED) { + if (madvise(mem, len, MADV_HUGEPAGE) != 0) { + // Just an advise, not everyone will listen... + } if (getStart() == nullptr) { setStart(mem); // assumes len parameter is always multiple of the current block size. |