8024366: Make UseNUMA enable UseNUMAInterleaving
Reviewed-by: brutisso, tschatzl
Contributed-by: shrinivas.joshi@oracle.com
--- a/hotspot/src/share/vm/runtime/arguments.cpp Fri Jan 31 09:58:06 2014 +0100
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Thu Jan 16 13:25:25 2014 -0800
@@ -3823,18 +3823,24 @@
}
jint Arguments::adjust_after_os() {
-#if INCLUDE_ALL_GCS
- if (UseParallelGC || UseParallelOldGC) {
- if (UseNUMA) {
+ if (UseNUMA) {
+ if (UseParallelGC || UseParallelOldGC) {
if (FLAG_IS_DEFAULT(MinHeapDeltaBytes)) {
- FLAG_SET_DEFAULT(MinHeapDeltaBytes, 64*M);
+ FLAG_SET_DEFAULT(MinHeapDeltaBytes, 64*M);
}
- // For those collectors or operating systems (eg, Windows) that do
- // not support full UseNUMA, we will map to UseNUMAInterleaving for now
- UseNUMAInterleaving = true;
+ }
+ // UseNUMAInterleaving is set to ON for all collectors and
+ // platforms when UseNUMA is set to ON. NUMA-aware collectors
+ // such as the parallel collector for Linux and Solaris will
+ // interleave old gen and survivor spaces on top of NUMA
+ // allocation policy for the eden space.
+ // Non NUMA-aware collectors such as CMS, G1 and Serial-GC on
+ // all platforms and ParallelGC on Windows will interleave all
+ // of the heap spaces across NUMA nodes.
+ if (FLAG_IS_DEFAULT(UseNUMAInterleaving)) {
+ FLAG_SET_ERGO(bool, UseNUMAInterleaving, true);
}
}
-#endif // INCLUDE_ALL_GCS
return JNI_OK;
}