# HG changeset patch # User ysr # Date 1249062089 25200 # Node ID 7f807f55161a95fcb0a51327dd9eee8aed5a7613 # Parent 83b687ce30902ddd72ed138442899f6dbc1c7d0c# Parent 66b0f834a44049013533767907d8bfe29a7ff204 Merge diff -r 66b0f834a440 -r 7f807f55161a src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp --- a/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp Thu Jul 30 15:06:19 2009 -0400 +++ b/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp Fri Jul 31 10:41:29 2009 -0700 @@ -104,17 +104,17 @@ double start_vtime_sec; // only used when G1SmoothConcRefine is on int prev_buffer_num; // only used when G1SmoothConcRefine is on // This thread activation threshold - int threshold = DCQBarrierProcessCompletedThreshold * _worker_id; + int threshold = G1UpdateBufferQueueProcessingThreshold * _worker_id; // Next thread activation threshold - int next_threshold = threshold + DCQBarrierProcessCompletedThreshold; - int deactivation_threshold = MAX2(threshold - DCQBarrierProcessCompletedThreshold / 2, 0); + int next_threshold = threshold + G1UpdateBufferQueueProcessingThreshold; + int deactivation_threshold = MAX2(threshold - G1UpdateBufferQueueProcessingThreshold / 2, 0); if (G1SmoothConcRefine) { lower_limit = 0; start_vtime_sec = os::elapsedVTime(); prev_buffer_num = (int) dcqs.completed_buffers_num(); } else { - lower_limit = DCQBarrierProcessCompletedThreshold / 4; // For now. + lower_limit = G1UpdateBufferQueueProcessingThreshold / 4; // For now. } while (dcqs.apply_closure_to_completed_buffer(_worker_id + _worker_id_offset, lower_limit)) { double end_vtime_sec; diff -r 66b0f834a440 -r 7f807f55161a src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp --- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Thu Jul 30 15:06:19 2009 -0400 +++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Fri Jul 31 10:41:29 2009 -0700 @@ -80,8 +80,8 @@ int max_completed_queue, Mutex* lock, PtrQueueSet* fl_owner) { PtrQueueSet::initialize(cbl_mon, fl_lock, max_completed_queue, fl_owner); - set_buffer_size(DCQBarrierQueueBufferSize); - set_process_completed_threshold(DCQBarrierProcessCompletedThreshold); + set_buffer_size(G1UpdateBufferSize); + set_process_completed_threshold(G1UpdateBufferQueueProcessingThreshold); _shared_dirty_card_queue.set_lock(lock); _free_ids = new FreeIdSet((int) num_par_ids(), _cbl_mon); diff -r 66b0f834a440 -r 7f807f55161a src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Jul 30 15:06:19 2009 -0400 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Jul 31 10:41:29 2009 -0700 @@ -1591,7 +1591,7 @@ JavaThread::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, DirtyCardQ_FL_lock, - G1DirtyCardQueueMax, + G1UpdateBufferQueueMaxLength, Shared_DirtyCardQ_lock); if (G1DeferredRSUpdate) { @@ -2845,6 +2845,11 @@ if (PrintHeapAtGC) { Universe::print_heap_after_gc(); } + if (G1SummarizeRSetStats && + (G1SummarizeRSetStatsPeriod > 0) && + (total_collections() % G1SummarizeRSetStatsPeriod == 0)) { + g1_rem_set()->print_summary_info(); + } } void G1CollectedHeap::set_gc_alloc_region(int purpose, HeapRegion* r) { diff -r 66b0f834a440 -r 7f807f55161a src/share/vm/gc_implementation/g1/g1_globals.hpp --- a/src/share/vm/gc_implementation/g1/g1_globals.hpp Thu Jul 30 15:06:19 2009 -0400 +++ b/src/share/vm/gc_implementation/g1/g1_globals.hpp Fri Jul 31 10:41:29 2009 -0700 @@ -34,7 +34,7 @@ product(intx, G1ConfidencePercent, 50, \ "Confidence level for MMU/pause predictions") \ \ - develop(intx, G1MarkingOverheadPercent, 0, \ + develop(intx, G1MarkingOverheadPercent, 0, \ "Overhead of concurrent marking") \ \ develop(bool, G1AccountConcurrentOverhead, false, \ @@ -47,7 +47,7 @@ develop(bool, G1Gen, true, \ "If true, it will enable the generational G1") \ \ - develop(intx, G1GCPercent, 10, \ + develop(intx, G1GCPercent, 10, \ "The desired percent time spent on GC") \ \ develop(intx, G1PolicyVerbose, 0, \ @@ -74,6 +74,12 @@ diagnostic(bool, G1SummarizeRSetStats, false, \ "Summarize remembered set processing info") \ \ + diagnostic(intx, G1SummarizeRSetStatsPeriod, 0, \ + "The period (in number of GCs) at which we will generate " \ + "update buffer processing info " \ + "(0 means do not periodically generate this info); " \ + "it also requires -XX:+G1SummarizeRSetStats") \ + \ diagnostic(bool, G1SummarizeZFStats, false, \ "Summarize zero-filling info") \ \ @@ -167,9 +173,16 @@ develop(bool, G1DisablePostBarrier, false, \ "Disable generation of post-barrier (i.e., RS barrier) ") \ \ - product(intx, G1DirtyCardQueueMax, 30, \ - "Maximum number of completed RS buffers before mutator threads " \ - "start processing them.") \ + product(intx, G1UpdateBufferSize, 256, \ + "Size of an update buffer") \ + \ + product(intx, G1UpdateBufferQueueProcessingThreshold, 5, \ + "Number of enqueued update buffers that will " \ + "trigger concurrent processing") \ + \ + product(intx, G1UpdateBufferQueueMaxLength, 30, \ + "Maximum number of enqueued update buffers before mutator " \ + "threads start processing new ones instead of enqueueing them") \ \ develop(intx, G1ConcRSLogCacheSize, 10, \ "Log base 2 of the length of conc RS hot-card cache.") \ diff -r 66b0f834a440 -r 7f807f55161a src/share/vm/runtime/globals.hpp --- a/src/share/vm/runtime/globals.hpp Thu Jul 30 15:06:19 2009 -0400 +++ b/src/share/vm/runtime/globals.hpp Fri Jul 31 10:41:29 2009 -0700 @@ -2927,12 +2927,6 @@ "how many entries we'll try to leave on the stack during " \ "parallel GC") \ \ - product(intx, DCQBarrierQueueBufferSize, 256, \ - "Number of elements in a dirty card queue buffer") \ - \ - product(intx, DCQBarrierProcessCompletedThreshold, 5, \ - "Number of completed dirty card buffers to trigger processing.") \ - \ /* stack parameters */ \ product_pd(intx, StackYellowPages, \ "Number of yellow zone (recoverable overflows) pages") \