< prev index next >
src/share/vm/gc/g1/g1CollectorPolicy.cpp
Print this page
rev 9416 : dihop-changes
rev 9418 : imported patch erik-jmasa-review
rev 9419 : [mq]: fix-evac-failure-needs-stats
*** 1207,1231 ****
// prediction too small and the limit the young gen every time we get to the
// predicted target occupancy.
size_t last_unrestrained_young_length = update_young_list_max_and_target_length();
update_rs_lengths_prediction();
! // Only update IHOP information on regular GCs.
! if (update_stats) {
! double marking_to_mixed_time = -1.0;
! if (!collector_state()->last_gc_was_young() && _initial_mark_to_mixed.has_result()) {
! marking_to_mixed_time = _initial_mark_to_mixed.last_marking_time();
! assert(marking_to_mixed_time > 0.0,
! "Initial mark to mixed time must be larger than zero but is %.3f",
! marking_to_mixed_time);
! }
!
! update_ihop_statistics(marking_to_mixed_time,
! app_time_ms / 1000.0,
_last_old_allocated_bytes,
last_unrestrained_young_length * HeapRegion::GrainBytes);
- }
_last_old_allocated_bytes = 0;
// Note that _mmu_tracker->max_gc_time() returns the time in seconds.
double update_rs_time_goal_ms = _mmu_tracker->max_gc_time() * MILLIUNITS * G1RSetUpdatingPauseTimePercent / 100.0;
--- 1207,1219 ----
// prediction too small and the limit the young gen every time we get to the
// predicted target occupancy.
size_t last_unrestrained_young_length = update_young_list_max_and_target_length();
update_rs_lengths_prediction();
! update_ihop_prediction(app_time_ms / 1000.0,
_last_old_allocated_bytes,
last_unrestrained_young_length * HeapRegion::GrainBytes);
_last_old_allocated_bytes = 0;
// Note that _mmu_tracker->max_gc_time() returns the time in seconds.
double update_rs_time_goal_ms = _mmu_tracker->max_gc_time() * MILLIUNITS * G1RSetUpdatingPauseTimePercent / 100.0;
*** 1254,1277 ****
G1IHOPControl* G1CollectorPolicy::create_ihop_control() const {
return new G1StaticIHOPControl(InitiatingHeapOccupancyPercent,
G1CollectedHeap::heap()->max_capacity());
}
! void G1CollectorPolicy::update_ihop_statistics(double marking_time,
! double mutator_time_s,
size_t mutator_alloc_bytes,
size_t young_gen_size) {
! bool report = false;
! // To avoid using really small times that may be caused by e.g. back-to-back gcs
! // we filter them out.
double const min_valid_time = 1e-6;
! if (marking_time > min_valid_time) {
! _ihop_control->update_marking_length(marking_time);
report = true;
}
// As an approximation for the young gc promotion rates during marking we use
// all of them. In many applications there are only a few if any young gcs during
// marking, which makes any prediction useless. This increases the accuracy of the
// prediction.
--- 1242,1274 ----
G1IHOPControl* G1CollectorPolicy::create_ihop_control() const {
return new G1StaticIHOPControl(InitiatingHeapOccupancyPercent,
G1CollectedHeap::heap()->max_capacity());
}
! void G1CollectorPolicy::update_ihop_prediction(double mutator_time_s,
size_t mutator_alloc_bytes,
size_t young_gen_size) {
! // Always try to update IHOP prediction. Even evacuation failures give information
! // about e.g. whether to start IHOP earlier next time.
! // Avoid using really small application times that might create samples with
! // very high or very low values. They may be caused by e.g. back-to-back gcs.
double const min_valid_time = 1e-6;
! bool report = false;
!
! double marking_to_mixed_time = -1.0;
! if (!collector_state()->last_gc_was_young() && _initial_mark_to_mixed.has_result()) {
! marking_to_mixed_time = _initial_mark_to_mixed.last_marking_time();
! assert(marking_to_mixed_time > 0.0,
! "Initial mark to mixed time must be larger than zero but is %.3f",
! marking_to_mixed_time);
! if (marking_to_mixed_time > min_valid_time) {
! _ihop_control->update_marking_length(marking_to_mixed_time);
report = true;
}
+ }
// As an approximation for the young gc promotion rates during marking we use
// all of them. In many applications there are only a few if any young gcs during
// marking, which makes any prediction useless. This increases the accuracy of the
// prediction.
< prev index next >