< prev index next >

src/hotspot/share/gc/g1/g1Analytics.cpp

Print this page
rev 59700 : imported patch 8244603-g1-limits-young-gen-size-8238858-prepare-mixed-sizing

*** 147,168 **** void G1Analytics::report_alloc_rate_ms(double alloc_rate) { _alloc_rate_ms_seq->add(alloc_rate); } ! void G1Analytics::compute_pause_time_ratio(double interval_ms, double pause_time_ms) { ! _long_term_pause_time_ratio = _recent_gc_times_ms->sum() / interval_ms; ! // Filter out nonsensical results due to bad input. _long_term_pause_time_ratio = clamp(_long_term_pause_time_ratio, 0.0, 1.0); ! // Compute the ratio of just this last pause time to the entire time range stored ! // in the vectors. Comparing this pause to the entire range, rather than only the ! // most recent interval, has the effect of smoothing over a possible transient 'burst' ! // of more frequent pauses that don't really reflect a change in heap occupancy. ! // This reduces the likelihood of a needless heap expansion being triggered. ! _short_term_pause_time_ratio = ! (pause_time_ms * _recent_prev_end_times_for_all_gcs_sec->num()) / interval_ms; } void G1Analytics::report_concurrent_refine_rate_ms(double cards_per_ms) { _concurrent_refine_rate_ms_seq->add(cards_per_ms); } --- 147,164 ---- void G1Analytics::report_alloc_rate_ms(double alloc_rate) { _alloc_rate_ms_seq->add(alloc_rate); } ! void G1Analytics::compute_pause_time_ratios(double end_time_sec, double pause_time_ms) { ! double long_interval_ms = (end_time_sec - oldest_known_gc_end_time_sec()) * 1000.0; ! _long_term_pause_time_ratio = _recent_gc_times_ms->sum() / long_interval_ms; _long_term_pause_time_ratio = clamp(_long_term_pause_time_ratio, 0.0, 1.0); ! double short_interval_ms = (end_time_sec - most_recent_gc_end_time_sec()) * 1000.0; ! _short_term_pause_time_ratio = pause_time_ms / short_interval_ms; ! _short_term_pause_time_ratio = clamp(_short_term_pause_time_ratio, 0.0, 1.0); } void G1Analytics::report_concurrent_refine_rate_ms(double cards_per_ms) { _concurrent_refine_rate_ms_seq->add(cards_per_ms); }
*** 226,236 **** --- 222,236 ---- void G1Analytics::report_rs_length(double rs_length) { _rs_length_seq->add(rs_length); } double G1Analytics::predict_alloc_rate_ms() const { + if (!enough_samples_available(_alloc_rate_ms_seq)) { return predict_zero_bounded(_alloc_rate_ms_seq); + } else { + return 0.0; + } } double G1Analytics::predict_concurrent_refine_rate_ms() const { return predict_zero_bounded(_concurrent_refine_rate_ms_seq); }
*** 309,322 **** size_t G1Analytics::predict_pending_cards() const { return predict_size(_pending_cards_seq); } ! double G1Analytics::last_known_gc_end_time_sec() const { return _recent_prev_end_times_for_all_gcs_sec->oldest(); } void G1Analytics::update_recent_gc_times(double end_time_sec, double pause_time_ms) { _recent_gc_times_ms->add(pause_time_ms); _recent_prev_end_times_for_all_gcs_sec->add(end_time_sec); _prev_collection_pause_end_ms = end_time_sec * 1000.0; --- 309,326 ---- size_t G1Analytics::predict_pending_cards() const { return predict_size(_pending_cards_seq); } ! double G1Analytics::oldest_known_gc_end_time_sec() const { return _recent_prev_end_times_for_all_gcs_sec->oldest(); } + double G1Analytics::most_recent_gc_end_time_sec() const { + return _recent_prev_end_times_for_all_gcs_sec->last(); + } + void G1Analytics::update_recent_gc_times(double end_time_sec, double pause_time_ms) { _recent_gc_times_ms->add(pause_time_ms); _recent_prev_end_times_for_all_gcs_sec->add(end_time_sec); _prev_collection_pause_end_ms = end_time_sec * 1000.0;
< prev index next >