src/share/vm/gc_implementation/g1/g1GCPhaseTimes.hpp

Print this page
rev 6327 : 8019342: G1: High "Other" time most likely due to card redirtying
Summary: Parallelize card redirtying to decrease the time it takes.
Reviewed-by: brutisso


 134   double _cur_strong_code_root_purge_time_ms;
 135 
 136   double _cur_evac_fail_recalc_used;
 137   double _cur_evac_fail_restore_remsets;
 138   double _cur_evac_fail_remove_self_forwards;
 139 
 140   double                  _cur_string_dedup_fixup_time_ms;
 141   WorkerDataArray<double> _cur_string_dedup_queue_fixup_worker_times_ms;
 142   WorkerDataArray<double> _cur_string_dedup_table_fixup_worker_times_ms;
 143 
 144   double _cur_clear_ct_time_ms;
 145   double _cur_ref_proc_time_ms;
 146   double _cur_ref_enq_time_ms;
 147 
 148   double _cur_collection_start_sec;
 149   double _root_region_scan_wait_time_ms;
 150 
 151   double _recorded_young_cset_choice_time_ms;
 152   double _recorded_non_young_cset_choice_time_ms;
 153 


 154   double _recorded_redirty_logged_cards_time_ms;
 155 
 156   double _recorded_young_free_cset_time_ms;
 157   double _recorded_non_young_free_cset_time_ms;
 158 
 159   double _cur_verify_before_time_ms;
 160   double _cur_verify_after_time_ms;
 161 
 162   // Helper methods for detailed logging
 163   void print_stats(int level, const char* str, double value);
 164   void print_stats(int level, const char* str, double value, uint workers);
 165 
 166  public:
 167   G1GCPhaseTimes(uint max_gc_threads);
 168   void note_gc_start(uint active_gc_threads);
 169   void note_gc_end();
 170   void print(double pause_time_sec);
 171 
 172   void record_gc_worker_start_time(uint worker_i, double ms) {
 173     _last_gc_worker_start_times_ms.set(worker_i, ms);


 276   void record_root_region_scan_wait_time(double time_ms) {
 277     _root_region_scan_wait_time_ms = time_ms;
 278   }
 279 
 280   void record_young_free_cset_time_ms(double time_ms) {
 281     _recorded_young_free_cset_time_ms = time_ms;
 282   }
 283 
 284   void record_non_young_free_cset_time_ms(double time_ms) {
 285     _recorded_non_young_free_cset_time_ms = time_ms;
 286   }
 287 
 288   void record_young_cset_choice_time_ms(double time_ms) {
 289     _recorded_young_cset_choice_time_ms = time_ms;
 290   }
 291 
 292   void record_non_young_cset_choice_time_ms(double time_ms) {
 293     _recorded_non_young_cset_choice_time_ms = time_ms;
 294   }
 295 








 296   void record_redirty_logged_cards_time_ms(double time_ms) {
 297     _recorded_redirty_logged_cards_time_ms = time_ms;
 298   }
 299 
 300   void record_cur_collection_start_sec(double time_ms) {
 301     _cur_collection_start_sec = time_ms;
 302   }
 303 
 304   void record_verify_before_time_ms(double time_ms) {
 305     _cur_verify_before_time_ms = time_ms;
 306   }
 307 
 308   void record_verify_after_time_ms(double time_ms) {
 309     _cur_verify_after_time_ms = time_ms;
 310   }
 311 
 312   double accounted_time_ms();
 313 
 314   double cur_collection_start_sec() {
 315     return _cur_collection_start_sec;




 134   double _cur_strong_code_root_purge_time_ms;
 135 
 136   double _cur_evac_fail_recalc_used;
 137   double _cur_evac_fail_restore_remsets;
 138   double _cur_evac_fail_remove_self_forwards;
 139 
 140   double                  _cur_string_dedup_fixup_time_ms;
 141   WorkerDataArray<double> _cur_string_dedup_queue_fixup_worker_times_ms;
 142   WorkerDataArray<double> _cur_string_dedup_table_fixup_worker_times_ms;
 143 
 144   double _cur_clear_ct_time_ms;
 145   double _cur_ref_proc_time_ms;
 146   double _cur_ref_enq_time_ms;
 147 
 148   double _cur_collection_start_sec;
 149   double _root_region_scan_wait_time_ms;
 150 
 151   double _recorded_young_cset_choice_time_ms;
 152   double _recorded_non_young_cset_choice_time_ms;
 153 
 154   WorkerDataArray<double> _last_redirty_logged_cards_time_ms;
 155   WorkerDataArray<size_t> _last_redirty_logged_cards_processed_cards;
 156   double _recorded_redirty_logged_cards_time_ms;
 157 
 158   double _recorded_young_free_cset_time_ms;
 159   double _recorded_non_young_free_cset_time_ms;
 160 
 161   double _cur_verify_before_time_ms;
 162   double _cur_verify_after_time_ms;
 163 
 164   // Helper methods for detailed logging
 165   void print_stats(int level, const char* str, double value);
 166   void print_stats(int level, const char* str, double value, uint workers);
 167 
 168  public:
 169   G1GCPhaseTimes(uint max_gc_threads);
 170   void note_gc_start(uint active_gc_threads);
 171   void note_gc_end();
 172   void print(double pause_time_sec);
 173 
 174   void record_gc_worker_start_time(uint worker_i, double ms) {
 175     _last_gc_worker_start_times_ms.set(worker_i, ms);


 278   void record_root_region_scan_wait_time(double time_ms) {
 279     _root_region_scan_wait_time_ms = time_ms;
 280   }
 281 
 282   void record_young_free_cset_time_ms(double time_ms) {
 283     _recorded_young_free_cset_time_ms = time_ms;
 284   }
 285 
 286   void record_non_young_free_cset_time_ms(double time_ms) {
 287     _recorded_non_young_free_cset_time_ms = time_ms;
 288   }
 289 
 290   void record_young_cset_choice_time_ms(double time_ms) {
 291     _recorded_young_cset_choice_time_ms = time_ms;
 292   }
 293 
 294   void record_non_young_cset_choice_time_ms(double time_ms) {
 295     _recorded_non_young_cset_choice_time_ms = time_ms;
 296   }
 297 
 298   void record_redirty_logged_cards_time_ms(uint worker_i, double time_ms) {
 299     _last_redirty_logged_cards_time_ms.set(worker_i, time_ms);
 300   }
 301 
 302   void record_redirty_logged_cards_processed_cards(uint worker_i, size_t processed_buffers) {
 303     _last_redirty_logged_cards_processed_cards.set(worker_i, processed_buffers);
 304   }
 305 
 306   void record_redirty_logged_cards_time_ms(double time_ms) {
 307     _recorded_redirty_logged_cards_time_ms = time_ms;
 308   }
 309 
 310   void record_cur_collection_start_sec(double time_ms) {
 311     _cur_collection_start_sec = time_ms;
 312   }
 313 
 314   void record_verify_before_time_ms(double time_ms) {
 315     _cur_verify_before_time_ms = time_ms;
 316   }
 317 
 318   void record_verify_after_time_ms(double time_ms) {
 319     _cur_verify_after_time_ms = time_ms;
 320   }
 321 
 322   double accounted_time_ms();
 323 
 324   double cur_collection_start_sec() {
 325     return _cur_collection_start_sec;