diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp index a2114d8d6b6..33b21d8348d 100644 --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp @@ -682,14 +682,14 @@ void G1ConcurrentMark::set_concurrency_and_phase(uint active_tasks, bool concurr #if TASKQUEUE_STATS void G1ConcurrentMark::print_and_reset_taskqueue_stats() { - _task_queues->print_and_reset_taskqueue_stats("G1ConcurrentMark Oop Queue"); + _task_queues->print_and_reset_taskqueue_stats("Concurrent Mark"); auto get_pa_stats = [&](uint i) { return _tasks[i]->partial_array_task_stats(); }; PartialArrayTaskStats::log_set(_max_num_tasks, get_pa_stats, - "G1ConcurrentMark Partial Array Task Stats"); + "Concurrent Mark Partial Array"); for (uint i = 0; i < _max_num_tasks; ++i) { get_pa_stats(i)->reset(); diff --git a/src/hotspot/share/gc/g1/g1FullCollector.cpp b/src/hotspot/share/gc/g1/g1FullCollector.cpp index e8498250f85..c835dd159a6 100644 --- a/src/hotspot/share/gc/g1/g1FullCollector.cpp +++ b/src/hotspot/share/gc/g1/g1FullCollector.cpp @@ -353,7 +353,13 @@ void G1FullCollector::phase1_mark_live_objects() { scope()->tracer()->report_object_count_after_gc(&_is_alive, _heap->workers()); } #if TASKQUEUE_STATS - marking_task_queues()->print_and_reset_taskqueue_stats("Marking Task Queue"); + marking_task_queues()->print_and_reset_taskqueue_stats("Full GC"); + + auto get_stats = [&](uint i) { + return marker(i)->partial_array_splitter().stats(); + }; + PartialArrayTaskStats::log_set(_num_workers, get_stats, + "Full GC Partial Array"); #endif } diff --git a/src/hotspot/share/gc/g1/g1FullGCMarker.hpp b/src/hotspot/share/gc/g1/g1FullGCMarker.hpp index 5973cc841c5..82fe3655319 100644 --- a/src/hotspot/share/gc/g1/g1FullGCMarker.hpp +++ b/src/hotspot/share/gc/g1/g1FullGCMarker.hpp @@ -89,6 +89,7 @@ public: ~G1FullGCMarker(); G1MarkTasksQueue* task_queue() { return &_task_queue; } + PartialArraySplitter& partial_array_splitter() { return _partial_array_splitter; } // Marking entry points template inline void mark_and_push(T* p); diff --git a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp index 75a8ef1a336..cb857dc6eab 100644 --- a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp +++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp @@ -741,7 +741,7 @@ void G1ParScanThreadStateSet::print_partial_array_task_stats() { return state_for_worker(i)->partial_array_task_stats(); }; PartialArrayTaskStats::log_set(_num_workers, get_stats, - "Partial Array Task Stats"); + "Young GC Partial Array"); } #endif // TASKQUEUE_STATS diff --git a/src/hotspot/share/gc/g1/g1YoungCollector.cpp b/src/hotspot/share/gc/g1/g1YoungCollector.cpp index a9a81f846af..71a76a2e48b 100644 --- a/src/hotspot/share/gc/g1/g1YoungCollector.cpp +++ b/src/hotspot/share/gc/g1/g1YoungCollector.cpp @@ -1064,6 +1064,7 @@ void G1YoungCollector::post_evacuate_collection_set(G1EvacInfo* evacuation_info, allocator()->release_gc_alloc_regions(evacuation_info); #if TASKQUEUE_STATS + _g1h->task_queues()->print_and_reset_taskqueue_stats("Young GC"); // Logging uses thread states, which are deleted by cleanup, so this must // be done before cleanup. per_thread_states->print_partial_array_task_stats(); @@ -1183,5 +1184,4 @@ void G1YoungCollector::collect() { policy()->record_young_collection_end(_concurrent_operation_is_full_mark, evacuation_alloc_failed(), _allocation_word_size); } - TASKQUEUE_STATS_ONLY(_g1h->task_queues()->print_and_reset_taskqueue_stats("Oop Queue");) } diff --git a/src/hotspot/share/gc/parallel/psCompactionManager.cpp b/src/hotspot/share/gc/parallel/psCompactionManager.cpp index b8ea47eeb09..0108f1a9762 100644 --- a/src/hotspot/share/gc/parallel/psCompactionManager.cpp +++ b/src/hotspot/share/gc/parallel/psCompactionManager.cpp @@ -203,13 +203,13 @@ void ParCompactionManager::remove_all_shadow_regions() { #if TASKQUEUE_STATS void ParCompactionManager::print_and_reset_taskqueue_stats() { - marking_stacks()->print_and_reset_taskqueue_stats("Marking Stacks"); + marking_stacks()->print_and_reset_taskqueue_stats("Full GC"); auto get_pa_stats = [&](uint i) { return _manager_array[i]->partial_array_task_stats(); }; PartialArrayTaskStats::log_set(ParallelGCThreads, get_pa_stats, - "Partial Array Task Stats"); + "Full GC Partial Array"); uint parallel_gc_threads = ParallelScavengeHeap::heap()->workers().max_workers(); for (uint i = 0; i < parallel_gc_threads; ++i) { get_pa_stats(i)->reset(); diff --git a/src/hotspot/share/gc/parallel/psPromotionManager.cpp b/src/hotspot/share/gc/parallel/psPromotionManager.cpp index d6208755374..39fcc5556c6 100644 --- a/src/hotspot/share/gc/parallel/psPromotionManager.cpp +++ b/src/hotspot/share/gc/parallel/psPromotionManager.cpp @@ -138,13 +138,13 @@ bool PSPromotionManager::post_scavenge(YoungGCTracer& gc_tracer) { #if TASKQUEUE_STATS void PSPromotionManager::print_and_reset_taskqueue_stats() { - stack_array_depth()->print_and_reset_taskqueue_stats("Oop Queue"); + stack_array_depth()->print_and_reset_taskqueue_stats("Young GC"); auto get_pa_stats = [&](uint i) { return manager_array(i)->partial_array_task_stats(); }; PartialArrayTaskStats::log_set(ParallelGCThreads, get_pa_stats, - "Partial Array Task Stats"); + "Young GC Partial Array"); for (uint i = 0; i < ParallelGCThreads; ++i) { get_pa_stats(i)->reset(); } diff --git a/src/hotspot/share/gc/shared/partialArrayTaskStats.cpp b/src/hotspot/share/gc/shared/partialArrayTaskStats.cpp index ac8a380ec9a..090430963c6 100644 --- a/src/hotspot/share/gc/shared/partialArrayTaskStats.cpp +++ b/src/hotspot/share/gc/shared/partialArrayTaskStats.cpp @@ -64,7 +64,7 @@ static const char* const stats_hdr[] = { }; void PartialArrayTaskStats::print_header(outputStream* s, const char* title) { - s->print_cr("%s:", title); + s->print_cr("GC Task Stats %s", title); for (uint i = 0; i < ARRAY_SIZE(stats_hdr); ++i) { s->print_cr("%s", stats_hdr[i]); }