aboutsummaryrefslogtreecommitdiff
path: root/src/os/linux
diff options
context:
space:
mode:
authoriveresov <none@none>2011-04-26 11:46:34 -0700
committeriveresov <none@none>2011-04-26 11:46:34 -0700
commit3c97278867b68862c6d316ad0522f6ea79d8428f (patch)
tree0eb16cfcb8b592142c4c04a95db5908a082a9e82 /src/os/linux
parent4175fdc544562c24b35c392a5758f098812574d8 (diff)
7037939: NUMA: Disable adaptive resizing if SHM large pages are used
Summary: Make the NUMA allocator behave properly with SHM and ISM large pages. Reviewed-by: ysr
Diffstat (limited to 'src/os/linux')
-rw-r--r--src/os/linux/vm/os_linux.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp
index 0c6213d1a..aea9c8f9d 100644
--- a/src/os/linux/vm/os_linux.cpp
+++ b/src/os/linux/vm/os_linux.cpp
@@ -4170,6 +4170,23 @@ jint os::init_2(void)
UseNUMA = false;
}
}
+ // With SHM large pages we cannot uncommit a page, so there's not way
+ // we can make the adaptive lgrp chunk resizing work. If the user specified
+ // both UseNUMA and UseLargePages (or UseSHM) on the command line - warn and
+ // disable adaptive resizing.
+ if (UseNUMA && UseLargePages && UseSHM) {
+ if (!FLAG_IS_DEFAULT(UseNUMA)) {
+ if (FLAG_IS_DEFAULT(UseLargePages) && FLAG_IS_DEFAULT(UseSHM)) {
+ UseLargePages = false;
+ } else {
+ warning("UseNUMA is not fully compatible with SHM large pages, disabling adaptive resizing");
+ UseAdaptiveSizePolicy = false;
+ UseAdaptiveNUMAChunkSizing = false;
+ }
+ } else {
+ UseNUMA = false;
+ }
+ }
if (!UseNUMA && ForceNUMA) {
UseNUMA = true;
}