7198334: UseNUMA modifies system parameters on non-NUMA system

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
This commit is contained in:
Erik Helin 2012-11-20 11:40:11 +01:00 committed by Bengt Rutisson
parent a054222634
commit 7e892709bd
3 changed files with 21 additions and 8 deletions

View File

@ -1485,14 +1485,6 @@ void Arguments::set_parallel_gc_flags() {
}
}
}
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 @@ jint Arguments::parse(const JavaVMInitArgs* args) {
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) {

View File

@ -409,6 +409,8 @@ class Arguments : AllStatic {
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

View File

@ -3334,6 +3334,9 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
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();