src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp
changeset 59198 92c98aa0f801
parent 58796 7608c17b7463
child 59319 9ee940f1de90
equal deleted inserted replaced
59197:bb3472aa26c8 59198:92c98aa0f801
   126   _merge_lb_dirty_cards = new WorkerDataArray<size_t>(max_gc_threads, "Dirty Cards:");
   126   _merge_lb_dirty_cards = new WorkerDataArray<size_t>(max_gc_threads, "Dirty Cards:");
   127   _gc_par_phases[MergeLB]->link_thread_work_items(_merge_lb_dirty_cards, MergeLBDirtyCards);
   127   _gc_par_phases[MergeLB]->link_thread_work_items(_merge_lb_dirty_cards, MergeLBDirtyCards);
   128   _merge_lb_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
   128   _merge_lb_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
   129   _gc_par_phases[MergeLB]->link_thread_work_items(_merge_lb_skipped_cards, MergeLBSkippedCards);
   129   _gc_par_phases[MergeLB]->link_thread_work_items(_merge_lb_skipped_cards, MergeLBSkippedCards);
   130 
   130 
   131   _obj_copy_lab_waste = new WorkerDataArray<size_t>(max_gc_threads, "LAB Waste");
   131   _gc_par_phases[MergePSS] = new WorkerDataArray<double>(1, "Merge Per-Thread State", true /* is_serial */);
   132   _gc_par_phases[ObjCopy]->link_thread_work_items(_obj_copy_lab_waste, ObjCopyLABWaste);
   132 
   133   _obj_copy_lab_undo_waste = new WorkerDataArray<size_t>(max_gc_threads, "LAB Undo Waste");
   133   _merge_pss_copied_bytes = new WorkerDataArray<size_t>(max_gc_threads, "Copied Bytes");
   134   _gc_par_phases[ObjCopy]->link_thread_work_items(_obj_copy_lab_undo_waste, ObjCopyLABUndoWaste);
   134   _gc_par_phases[MergePSS]->link_thread_work_items(_merge_pss_copied_bytes, MergePSSCopiedBytes);
   135 
   135   _merge_pss_lab_waste_bytes = new WorkerDataArray<size_t>(max_gc_threads, "LAB Waste");
   136   _opt_obj_copy_lab_waste = new WorkerDataArray<size_t>(max_gc_threads, "LAB Waste");
   136   _gc_par_phases[MergePSS]->link_thread_work_items(_merge_pss_lab_waste_bytes, MergePSSLABWasteBytes);
   137   _gc_par_phases[OptObjCopy]->link_thread_work_items(_obj_copy_lab_waste, ObjCopyLABWaste);
   137   _merge_pss_lab_undo_waste_bytes = new WorkerDataArray<size_t>(max_gc_threads, "LAB Undo Waste");
   138   _opt_obj_copy_lab_undo_waste  = new WorkerDataArray<size_t>(max_gc_threads, "LAB Undo Waste");
   138   _gc_par_phases[MergePSS]->link_thread_work_items(_merge_pss_lab_undo_waste_bytes, MergePSSLABUndoWasteBytes);
   139   _gc_par_phases[OptObjCopy]->link_thread_work_items(_obj_copy_lab_undo_waste, ObjCopyLABUndoWaste);
       
   140 
   139 
   141   _termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Termination Attempts:");
   140   _termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Termination Attempts:");
   142   _gc_par_phases[Termination]->link_thread_work_items(_termination_attempts);
   141   _gc_par_phases[Termination]->link_thread_work_items(_termination_attempts);
   143 
   142 
   144   _opt_termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Optional Termination Attempts:");
   143   _opt_termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Optional Termination Attempts:");
   187   _recorded_clear_claimed_marks_time_ms = 0.0;
   186   _recorded_clear_claimed_marks_time_ms = 0.0;
   188   _recorded_young_cset_choice_time_ms = 0.0;
   187   _recorded_young_cset_choice_time_ms = 0.0;
   189   _recorded_non_young_cset_choice_time_ms = 0.0;
   188   _recorded_non_young_cset_choice_time_ms = 0.0;
   190   _recorded_redirty_logged_cards_time_ms = 0.0;
   189   _recorded_redirty_logged_cards_time_ms = 0.0;
   191   _recorded_preserve_cm_referents_time_ms = 0.0;
   190   _recorded_preserve_cm_referents_time_ms = 0.0;
   192   _recorded_merge_pss_time_ms = 0.0;
       
   193   _recorded_start_new_cset_time_ms = 0.0;
   191   _recorded_start_new_cset_time_ms = 0.0;
   194   _recorded_total_free_cset_time_ms = 0.0;
   192   _recorded_total_free_cset_time_ms = 0.0;
   195   _recorded_serial_free_cset_time_ms = 0.0;
   193   _recorded_serial_free_cset_time_ms = 0.0;
   196   _cur_fast_reclaim_humongous_time_ms = 0.0;
   194   _cur_fast_reclaim_humongous_time_ms = 0.0;
   197   _cur_region_register_time = 0.0;
   195   _cur_region_register_time = 0.0;
   462 }
   460 }
   463 
   461 
   464 double G1GCPhaseTimes::print_post_evacuate_collection_set() const {
   462 double G1GCPhaseTimes::print_post_evacuate_collection_set() const {
   465   const double evac_fail_handling = _cur_evac_fail_recalc_used +
   463   const double evac_fail_handling = _cur_evac_fail_recalc_used +
   466                                     _cur_evac_fail_remove_self_forwards;
   464                                     _cur_evac_fail_remove_self_forwards;
       
   465   assert(_gc_par_phases[MergePSS]->get(0) != WorkerDataArray<double>::uninitialized(), "must be set");
       
   466   const double merge_pss = _gc_par_phases[MergePSS]->get(0) * MILLIUNITS;
   467   const double sum_ms = evac_fail_handling +
   467   const double sum_ms = evac_fail_handling +
   468                         _cur_collection_code_root_fixup_time_ms +
   468                         _cur_collection_code_root_fixup_time_ms +
   469                         _recorded_preserve_cm_referents_time_ms +
   469                         _recorded_preserve_cm_referents_time_ms +
   470                         _cur_ref_proc_time_ms +
   470                         _cur_ref_proc_time_ms +
   471                         (_weak_phase_times.total_time_sec() * MILLIUNITS) +
   471                         (_weak_phase_times.total_time_sec() * MILLIUNITS) +
   472                         _cur_clear_ct_time_ms +
   472                         _cur_clear_ct_time_ms +
   473                         _recorded_merge_pss_time_ms +
   473                         merge_pss +
   474                         _cur_strong_code_root_purge_time_ms +
   474                         _cur_strong_code_root_purge_time_ms +
   475                         _recorded_redirty_logged_cards_time_ms +
   475                         _recorded_redirty_logged_cards_time_ms +
   476                         _recorded_total_free_cset_time_ms +
   476                         _recorded_total_free_cset_time_ms +
   477                         _cur_fast_reclaim_humongous_time_ms +
   477                         _cur_fast_reclaim_humongous_time_ms +
   478                         _cur_expand_heap_time_ms +
   478                         _cur_expand_heap_time_ms +
   498     debug_time("Evacuation Failure", evac_fail_handling);
   498     debug_time("Evacuation Failure", evac_fail_handling);
   499     trace_time("Recalculate Used", _cur_evac_fail_recalc_used);
   499     trace_time("Recalculate Used", _cur_evac_fail_recalc_used);
   500     trace_time("Remove Self Forwards",_cur_evac_fail_remove_self_forwards);
   500     trace_time("Remove Self Forwards",_cur_evac_fail_remove_self_forwards);
   501   }
   501   }
   502 
   502 
   503   debug_time("Merge Per-Thread State", _recorded_merge_pss_time_ms);
   503   debug_phase(_gc_par_phases[MergePSS], 0);
   504   debug_time("Code Roots Purge", _cur_strong_code_root_purge_time_ms);
   504   debug_time("Code Roots Purge", _cur_strong_code_root_purge_time_ms);
   505 
   505 
   506   debug_time("Redirty Cards", _recorded_redirty_logged_cards_time_ms);
   506   debug_time("Redirty Cards", _recorded_redirty_logged_cards_time_ms);
   507   trace_phase(_gc_par_phases[RedirtyCards]);
   507   trace_phase(_gc_par_phases[RedirtyCards]);
   508 #if COMPILER2_OR_JVMCI
   508 #if COMPILER2_OR_JVMCI
   583       "GCWorkerEnd",
   583       "GCWorkerEnd",
   584       "StringDedupQueueFixup",
   584       "StringDedupQueueFixup",
   585       "StringDedupTableFixup",
   585       "StringDedupTableFixup",
   586       "RedirtyCards",
   586       "RedirtyCards",
   587       "YoungFreeCSet",
   587       "YoungFreeCSet",
   588       "NonYoungFreeCSet"
   588       "NonYoungFreeCSet",
       
   589       "MergePSS"
   589       //GCParPhasesSentinel only used to tell end of enum
   590       //GCParPhasesSentinel only used to tell end of enum
   590       };
   591       };
   591 
   592 
   592   STATIC_ASSERT(ARRAY_SIZE(names) == G1GCPhaseTimes::GCParPhasesSentinel); // GCParPhases enum and corresponding string array should have the same "length", this tries to assert it
   593   STATIC_ASSERT(ARRAY_SIZE(names) == G1GCPhaseTimes::GCParPhasesSentinel); // GCParPhases enum and corresponding string array should have the same "length", this tries to assert it
   593 
   594