diff options
author | Matti Picus <matti.picus@gmail.com> | 2020-05-03 08:17:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-03 08:17:37 +0300 |
commit | 22724bac3465e6f699313cb6301722cddc6351b3 (patch) | |
tree | 9334e2fde4ee086911c04148ff2a54b07de08aba /numpy/__init__.py | |
parent | 6c9ecdf2847d03d04f5111d6df427a29fbb36319 (diff) | |
parent | 33958023330fb739013824849114eb52acabe176 (diff) | |
download | numpy-22724bac3465e6f699313cb6301722cddc6351b3.tar.gz |
Merge pull request #15769 from seberg/hugepages-allow-toggling
ENH: Allow toggling madvise hugepage and fix default
Diffstat (limited to 'numpy/__init__.py')
-rw-r--r-- | numpy/__init__.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/numpy/__init__.py b/numpy/__init__.py index 2d3423c56..575e8ea3d 100644 --- a/numpy/__init__.py +++ b/numpy/__init__.py @@ -285,3 +285,24 @@ else: error_message)) raise RuntimeError(msg) del _mac_os_check + + # We usually use madvise hugepages support, but on some old kernels it + # is slow and thus better avoided. + # Specifically kernel version 4.6 had a bug fix which probably fixed this: + # https://github.com/torvalds/linux/commit/7cf91a98e607c2f935dbcc177d70011e95b8faff + import os + use_hugepage = os.environ.get("NUMPY_MADVISE_HUGEPAGE", None) + if sys.platform == "linux" and use_hugepage is None: + use_hugepage = 1 + kernel_version = os.uname().release.split(".")[:2] + kernel_version = tuple(int(v) for v in kernel_version) + if kernel_version < (4, 6): + use_hugepage = 0 + elif use_hugepage is None: + # This is not Linux, so it should not matter, just enable anyway + use_hugepage = 1 + else: + use_hugepage = int(use_hugepage) + + # Note that this will currently only make a difference on Linux + core.multiarray._set_madvise_hugepage(use_hugepage) |