80 // Markers for grouping the phases in the GCPhases enum above
81 static const int GCMainParPhasesLast = GCWorkerEnd;
82 static const int StringDedupPhasesFirst = StringDedupQueueFixup;
83 static const int StringDedupPhasesLast = StringDedupTableFixup;
84
85 WorkerDataArray<double>* _gc_par_phases[GCParPhasesSentinel];
86 WorkerDataArray<size_t>* _update_rs_processed_buffers;
87 WorkerDataArray<size_t>* _termination_attempts;
88 WorkerDataArray<size_t>* _redirtied_cards;
89
90 double _cur_collection_par_time_ms;
91 double _cur_collection_code_root_fixup_time_ms;
92 double _cur_strong_code_root_purge_time_ms;
93
94 double _cur_evac_fail_recalc_used;
95 double _cur_evac_fail_restore_remsets;
96 double _cur_evac_fail_remove_self_forwards;
97
98 double _cur_string_dedup_fixup_time_ms;
99
100 double _cur_clear_ct_time_ms;
101 double _cur_expand_heap_time_ms;
102 double _cur_ref_proc_time_ms;
103 double _cur_ref_enq_time_ms;
104
105 double _cur_collection_start_sec;
106 double _root_region_scan_wait_time_ms;
107
108 double _external_accounted_time_ms;
109
110 double _recorded_clear_claimed_marks_time_ms;
111
112 double _recorded_young_cset_choice_time_ms;
113 double _recorded_non_young_cset_choice_time_ms;
114
115 double _recorded_redirty_logged_cards_time_ms;
116
117 double _recorded_preserve_cm_referents_time_ms;
118
119 double _recorded_merge_pss_time_ms;
120
121 double _recorded_total_free_cset_time_ms;
122
123 double _recorded_serial_free_cset_time_ms;
124
125 double _cur_fast_reclaim_humongous_time_ms;
126 double _cur_fast_reclaim_humongous_register_time_ms;
127 size_t _cur_fast_reclaim_humongous_total;
128 size_t _cur_fast_reclaim_humongous_candidates;
129 size_t _cur_fast_reclaim_humongous_reclaimed;
130
131 double _cur_verify_before_time_ms;
132 double _cur_verify_after_time_ms;
133
134 double worker_time(GCParPhases phase, uint worker);
135 void note_gc_end();
136 void reset();
137
138 template <class T>
139 void details(T* phase, const char* indent) const;
140
155 public:
156 G1GCPhaseTimes(uint max_gc_threads);
157 void note_gc_start();
158 void print();
159
160 // record the time a phase took in seconds
161 void record_time_secs(GCParPhases phase, uint worker_i, double secs);
162
163 // add a number of seconds to a phase
164 void add_time_secs(GCParPhases phase, uint worker_i, double secs);
165
166 void record_thread_work_item(GCParPhases phase, uint worker_i, size_t count);
167
168 // return the average time for a phase in milliseconds
169 double average_time_ms(GCParPhases phase);
170
171 size_t sum_thread_work_items(GCParPhases phase);
172
173 public:
174
175 void record_clear_ct_time(double ms) {
176 _cur_clear_ct_time_ms = ms;
177 }
178
179 void record_expand_heap_time(double ms) {
180 _cur_expand_heap_time_ms = ms;
181 }
182
183 void record_par_time(double ms) {
184 _cur_collection_par_time_ms = ms;
185 }
186
187 void record_code_root_fixup_time(double ms) {
188 _cur_collection_code_root_fixup_time_ms = ms;
189 }
190
191 void record_strong_code_root_purge_time(double ms) {
192 _cur_strong_code_root_purge_time_ms = ms;
193 }
194
240 }
241
242 void record_young_cset_choice_time_ms(double time_ms) {
243 _recorded_young_cset_choice_time_ms = time_ms;
244 }
245
246 void record_non_young_cset_choice_time_ms(double time_ms) {
247 _recorded_non_young_cset_choice_time_ms = time_ms;
248 }
249
250 void record_redirty_logged_cards_time_ms(double time_ms) {
251 _recorded_redirty_logged_cards_time_ms = time_ms;
252 }
253
254 void record_preserve_cm_referents_time_ms(double time_ms) {
255 _recorded_preserve_cm_referents_time_ms = time_ms;
256 }
257
258 void record_merge_pss_time_ms(double time_ms) {
259 _recorded_merge_pss_time_ms = time_ms;
260 }
261
262 void record_cur_collection_start_sec(double time_ms) {
263 _cur_collection_start_sec = time_ms;
264 }
265
266 void record_verify_before_time_ms(double time_ms) {
267 _cur_verify_before_time_ms = time_ms;
268 }
269
270 void record_verify_after_time_ms(double time_ms) {
271 _cur_verify_after_time_ms = time_ms;
272 }
273
274 void inc_external_accounted_time_ms(double time_ms) {
275 _external_accounted_time_ms += time_ms;
276 }
277
278 void record_clear_claimed_marks_time_ms(double recorded_clear_claimed_marks_time_ms) {
279 _recorded_clear_claimed_marks_time_ms = recorded_clear_claimed_marks_time_ms;
|
80 // Markers for grouping the phases in the GCPhases enum above
81 static const int GCMainParPhasesLast = GCWorkerEnd;
82 static const int StringDedupPhasesFirst = StringDedupQueueFixup;
83 static const int StringDedupPhasesLast = StringDedupTableFixup;
84
85 WorkerDataArray<double>* _gc_par_phases[GCParPhasesSentinel];
86 WorkerDataArray<size_t>* _update_rs_processed_buffers;
87 WorkerDataArray<size_t>* _termination_attempts;
88 WorkerDataArray<size_t>* _redirtied_cards;
89
90 double _cur_collection_par_time_ms;
91 double _cur_collection_code_root_fixup_time_ms;
92 double _cur_strong_code_root_purge_time_ms;
93
94 double _cur_evac_fail_recalc_used;
95 double _cur_evac_fail_restore_remsets;
96 double _cur_evac_fail_remove_self_forwards;
97
98 double _cur_string_dedup_fixup_time_ms;
99
100 double _cur_prepare_tlab_time_ms;
101 double _cur_resize_tlab_time_ms;
102
103 double _cur_dpt_update_time_ms;
104
105 double _cur_clear_ct_time_ms;
106 double _cur_expand_heap_time_ms;
107 double _cur_ref_proc_time_ms;
108 double _cur_ref_enq_time_ms;
109
110 double _cur_collection_start_sec;
111 double _root_region_scan_wait_time_ms;
112
113 double _external_accounted_time_ms;
114
115 double _recorded_clear_claimed_marks_time_ms;
116
117 double _recorded_young_cset_choice_time_ms;
118 double _recorded_non_young_cset_choice_time_ms;
119
120 double _recorded_redirty_logged_cards_time_ms;
121
122 double _recorded_preserve_cm_referents_time_ms;
123
124 double _recorded_merge_pss_time_ms;
125
126 double _recorded_start_new_cset_time_ms;
127
128 double _recorded_total_free_cset_time_ms;
129
130 double _recorded_serial_free_cset_time_ms;
131
132 double _cur_fast_reclaim_humongous_time_ms;
133 double _cur_fast_reclaim_humongous_register_time_ms;
134 size_t _cur_fast_reclaim_humongous_total;
135 size_t _cur_fast_reclaim_humongous_candidates;
136 size_t _cur_fast_reclaim_humongous_reclaimed;
137
138 double _cur_verify_before_time_ms;
139 double _cur_verify_after_time_ms;
140
141 double worker_time(GCParPhases phase, uint worker);
142 void note_gc_end();
143 void reset();
144
145 template <class T>
146 void details(T* phase, const char* indent) const;
147
162 public:
163 G1GCPhaseTimes(uint max_gc_threads);
164 void note_gc_start();
165 void print();
166
167 // record the time a phase took in seconds
168 void record_time_secs(GCParPhases phase, uint worker_i, double secs);
169
170 // add a number of seconds to a phase
171 void add_time_secs(GCParPhases phase, uint worker_i, double secs);
172
173 void record_thread_work_item(GCParPhases phase, uint worker_i, size_t count);
174
175 // return the average time for a phase in milliseconds
176 double average_time_ms(GCParPhases phase);
177
178 size_t sum_thread_work_items(GCParPhases phase);
179
180 public:
181
182 void record_prepare_tlab_time_ms(double ms) {
183 _cur_prepare_tlab_time_ms = ms;
184 }
185
186 void record_resize_tlab_time_ms(double ms) {
187 _cur_resize_tlab_time_ms = ms;
188 }
189
190 void record_dpt_update_time(double ms) {
191 _cur_dpt_update_time_ms = ms;
192 }
193
194 void record_clear_ct_time(double ms) {
195 _cur_clear_ct_time_ms = ms;
196 }
197
198 void record_expand_heap_time(double ms) {
199 _cur_expand_heap_time_ms = ms;
200 }
201
202 void record_par_time(double ms) {
203 _cur_collection_par_time_ms = ms;
204 }
205
206 void record_code_root_fixup_time(double ms) {
207 _cur_collection_code_root_fixup_time_ms = ms;
208 }
209
210 void record_strong_code_root_purge_time(double ms) {
211 _cur_strong_code_root_purge_time_ms = ms;
212 }
213
259 }
260
261 void record_young_cset_choice_time_ms(double time_ms) {
262 _recorded_young_cset_choice_time_ms = time_ms;
263 }
264
265 void record_non_young_cset_choice_time_ms(double time_ms) {
266 _recorded_non_young_cset_choice_time_ms = time_ms;
267 }
268
269 void record_redirty_logged_cards_time_ms(double time_ms) {
270 _recorded_redirty_logged_cards_time_ms = time_ms;
271 }
272
273 void record_preserve_cm_referents_time_ms(double time_ms) {
274 _recorded_preserve_cm_referents_time_ms = time_ms;
275 }
276
277 void record_merge_pss_time_ms(double time_ms) {
278 _recorded_merge_pss_time_ms = time_ms;
279 }
280
281 void record_start_new_cset_time_ms(double time_ms) {
282 _recorded_start_new_cset_time_ms = time_ms;
283 }
284
285 void record_cur_collection_start_sec(double time_ms) {
286 _cur_collection_start_sec = time_ms;
287 }
288
289 void record_verify_before_time_ms(double time_ms) {
290 _cur_verify_before_time_ms = time_ms;
291 }
292
293 void record_verify_after_time_ms(double time_ms) {
294 _cur_verify_after_time_ms = time_ms;
295 }
296
297 void inc_external_accounted_time_ms(double time_ms) {
298 _external_accounted_time_ms += time_ms;
299 }
300
301 void record_clear_claimed_marks_time_ms(double recorded_clear_claimed_marks_time_ms) {
302 _recorded_clear_claimed_marks_time_ms = recorded_clear_claimed_marks_time_ms;
|