src/share/vm/gc_implementation/g1/concurrentMark.cpp

Print this page
rev 4029 : 8006894: G1: Number of marking threads missing from PrintFlagsFinal output
Summary: Set ConcGCThreads to the calculated number of marking threads.
Reviewed-by:

*** 570,591 **** _max_parallel_marking_threads = 0; _sleep_factor = 0.0; _marking_task_overhead = 1.0; } else { if (ConcGCThreads > 0) { ! // notice that ConcGCThreads overwrites G1MarkingOverheadPercent // if both are set - - _parallel_marking_threads = (uint) ConcGCThreads; - _max_parallel_marking_threads = _parallel_marking_threads; _sleep_factor = 0.0; _marking_task_overhead = 1.0; } else if (G1MarkingOverheadPercent > 0) { ! // we will calculate the number of parallel marking threads ! // based on a target overhead with respect to the soft real-time ! // goal ! double marking_overhead = (double) G1MarkingOverheadPercent / 100.0; double overall_cm_overhead = (double) MaxGCPauseMillis * marking_overhead / (double) GCPauseIntervalMillis; double cpu_ratio = 1.0 / (double) os::processor_count(); --- 570,586 ---- _max_parallel_marking_threads = 0; _sleep_factor = 0.0; _marking_task_overhead = 1.0; } else { if (ConcGCThreads > 0) { ! // Note: ConcGCThreads has precedence over G1MarkingOverheadPercent // if both are set _sleep_factor = 0.0; _marking_task_overhead = 1.0; } else if (G1MarkingOverheadPercent > 0) { ! // We will calculate the number of parallel marking threads based ! // on a target overhead with respect to the soft real-time goal double marking_overhead = (double) G1MarkingOverheadPercent / 100.0; double overall_cm_overhead = (double) MaxGCPauseMillis * marking_overhead / (double) GCPauseIntervalMillis; double cpu_ratio = 1.0 / (double) os::processor_count();
*** 594,614 **** overall_cm_overhead / marking_thread_num * (double) os::processor_count(); double sleep_factor = (1.0 - marking_task_overhead) / marking_task_overhead; ! _parallel_marking_threads = (uint) marking_thread_num; ! _max_parallel_marking_threads = _parallel_marking_threads; _sleep_factor = sleep_factor; _marking_task_overhead = marking_task_overhead; } else { ! _parallel_marking_threads = scale_parallel_threads((uint)ParallelGCThreads); ! _max_parallel_marking_threads = _parallel_marking_threads; _sleep_factor = 0.0; _marking_task_overhead = 1.0; } if (parallel_marking_threads() > 1) { _cleanup_task_overhead = 1.0; } else { _cleanup_task_overhead = marking_task_overhead(); } --- 589,614 ---- overall_cm_overhead / marking_thread_num * (double) os::processor_count(); double sleep_factor = (1.0 - marking_task_overhead) / marking_task_overhead; ! FLAG_SET_ERGO(uintx, ConcGCThreads, (uint) marking_thread_num); _sleep_factor = sleep_factor; _marking_task_overhead = marking_task_overhead; } else { ! // Calculate the number of parallel marking threads by scaling ! // the number of parallel GC threads. ! uint marking_thread_num = scale_parallel_threads((uint) ParallelGCThreads); ! FLAG_SET_ERGO(uintx, ConcGCThreads, marking_thread_num); _sleep_factor = 0.0; _marking_task_overhead = 1.0; } + assert(ConcGCThreads > 0, "Should have been set"); + _parallel_marking_threads = (uint) ConcGCThreads; + _max_parallel_marking_threads = _parallel_marking_threads; + if (parallel_marking_threads() > 1) { _cleanup_task_overhead = 1.0; } else { _cleanup_task_overhead = marking_task_overhead(); }