aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vespalib/src/vespa/vespalib/util/alloc.cpp3
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mmappool.cpp3
-rw-r--r--vespamalloc/src/vespamalloc/util/osmem.cpp3
3 files changed, 9 insertions, 0 deletions
diff --git a/vespalib/src/vespa/vespalib/util/alloc.cpp b/vespalib/src/vespa/vespalib/util/alloc.cpp
index 3f49fc4b427..0f453111c72 100644
--- a/vespalib/src/vespa/vespalib/util/alloc.cpp
+++ b/vespalib/src/vespa/vespalib/util/alloc.cpp
@@ -353,6 +353,9 @@ MMapAllocator::salloc(size_t sz, void * wantedAddress)
store_relaxed(_G_hasHugePageFailureJustHappened, false);
}
#ifdef __linux__
+ if (madvise(buf, sz, MADV_HUGEPAGE) != 0) {
+ // Just an advise, not everyone will listen...
+ }
if (sz >= _G_MMapNoCoreLimit) {
if (madvise(buf, sz, MADV_DONTDUMP) != 0) {
LOG(warning, "Failed madvise(%p, %ld, MADV_DONTDUMP) = '%s'", buf, sz, FastOS_FileInterface::getLastErrorString().c_str());
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.