diff --git a/CMakeLists.txt b/CMakeLists.txt index d37734ac8..86deb7a19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,7 @@ option(WITH_VAES "Enable VAES instructions for Cryptonight" ON) option(WITH_BENCHMARK "Enable builtin RandomX benchmark and stress test" ON) option(WITH_SECURE_JIT "Enable secure access to JIT memory" OFF) option(WITH_DMI "Enable DMI/SMBIOS reader" ON) +option(WITH_AUTO_HUGEPAGE "Enable Automatic setting of nr_hugepages (Linux Only)" ON) option(BUILD_STATIC "Build static binary" OFF) option(ARM_V8 "Force ARMv8 (64 bit) architecture, use with caution if automatic detection fails, but you sure it may work" OFF) @@ -181,6 +182,10 @@ else() if (XMRIG_OS_ANDROID) set(EXTRA_LIBS pthread rt dl log) elseif (XMRIG_OS_LINUX) + if (WITH_AUTO_HUGEPAGE) + add_definitions(/DXMRIG_FEATURE_AUTO_HUGEPAGE) + endif() + list(APPEND SOURCES_OS src/crypto/common/LinuxMemory.h src/crypto/common/LinuxMemory.cpp diff --git a/src/crypto/common/LinuxMemory.cpp b/src/crypto/common/LinuxMemory.cpp index 8a00e1c36..9fd5f0c2b 100644 --- a/src/crypto/common/LinuxMemory.cpp +++ b/src/crypto/common/LinuxMemory.cpp @@ -60,7 +60,11 @@ bool xmrig::LinuxMemory::reserve(size_t size, uint32_t node, size_t hugePageSize return false; } +# ifdef XMRIG_FEATURE_AUTO_HUGEPAGE return write_nr_hugepages(node, hugePageSize, std::max(nr_hugepages(node, hugePageSize), 0) + (required - available)); +# else + return false; +# endif }