--- old/src/os/linux/vm/os_linux.cpp 2012-07-03 01:28:43.000000000 +0200 +++ new/src/os/linux/vm/os_linux.cpp 2012-07-03 01:28:43.000000000 +0200 @@ -4234,7 +4234,12 @@ Linux::is_floating_stack() ? "floating stack" : "fixed stack"); } +#ifdef _LP64 + // For 64 bit numa systems, enable numa features if heap is large enough + if (UseNUMA || (FLAG_IS_DEFAULT(UseNUMA) && is_server_class_machine())) { +#else if (UseNUMA) { +#endif if (!Linux::libnuma_init()) { UseNUMA = false; } else { @@ -4242,6 +4247,15 @@ // There's only one node(they start from 0), disable NUMA. UseNUMA = false; } +#ifdef _LP64 + else { + // There is more than 1 node + if (FLAG_IS_DEFAULT(UseNUMA) && (MaxHeapSize >= NUMAAutoStartHeapSize)) { + UseNUMA = true; + UseNUMAInterleaving = true; + } + } +#endif } // 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