7198334: UseNUMA modifies system parameters on non-NUMA system
Summary: The flags MinHeapDeltaBytes and UseNUMAInterleaving must be adjusted after the OS have adjusted the UseNUMA flag in the method os::init_2.
Reviewed-by: dholmes, brutisso
Contributed-by: erik.helin@oracle.com
--- a/hotspot/src/share/vm/runtime/arguments.cpp Fri Nov 16 09:43:43 2012 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Tue Nov 20 11:40:11 2012 +0100
@@ -1485,14 +1485,6 @@
}
}
}
- if (UseNUMA) {
- if (FLAG_IS_DEFAULT(MinHeapDeltaBytes)) {
- 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;
- }
}
void Arguments::set_g1_gc_flags() {
@@ -3332,6 +3324,22 @@
return JNI_OK;
}
+jint Arguments::adjust_after_os() {
+#if INCLUDE_ALTERNATE_GCS
+ if (UseParallelGC || UseParallelOldGC) {
+ if (UseNUMA) {
+ if (FLAG_IS_DEFAULT(MinHeapDeltaBytes)) {
+ 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;
+ }
+ }
+#endif
+ return JNI_OK;
+}
+
int Arguments::PropertyList_count(SystemProperty* pl) {
int count = 0;
while(pl != NULL) {
--- a/hotspot/src/share/vm/runtime/arguments.hpp Fri Nov 16 09:43:43 2012 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.hpp Tue Nov 20 11:40:11 2012 +0100
@@ -409,6 +409,8 @@
public:
// Parses the arguments
static jint parse(const JavaVMInitArgs* args);
+ // Adjusts the arguments after the OS have adjusted the arguments
+ static jint adjust_after_os();
// Check for consistency in the selection of the garbage collector.
static bool check_gc_consistency();
// Check consistecy or otherwise of VM argument settings
--- a/hotspot/src/share/vm/runtime/thread.cpp Fri Nov 16 09:43:43 2012 -0800
+++ b/hotspot/src/share/vm/runtime/thread.cpp Tue Nov 20 11:40:11 2012 +0100
@@ -3334,6 +3334,9 @@
jint os_init_2_result = os::init_2();
if (os_init_2_result != JNI_OK) return os_init_2_result;
+ jint adjust_after_os_result = Arguments::adjust_after_os();
+ if (adjust_after_os_result != JNI_OK) return adjust_after_os_result;
+
// intialize TLS
ThreadLocalStorage::init();