< prev index next >

src/hotspot/share/gc/g1/g1Policy.hpp

Print this page
rev 59701 : imported patch 8238163-improve-adaptive-ihop

*** 59,69 **** static G1IHOPControl* create_ihop_control(const G1Predictions* predictor); // Update the IHOP control with necessary statistics. void update_ihop_prediction(double mutator_time_s, size_t mutator_alloc_bytes, size_t young_gen_size, ! bool this_gc_was_young_only); void report_ihop_statistics(); G1Predictions _predictor; G1Analytics* _analytics; G1RemSetTrackingPolicy _remset_tracker; --- 59,70 ---- static G1IHOPControl* create_ihop_control(const G1Predictions* predictor); // Update the IHOP control with necessary statistics. void update_ihop_prediction(double mutator_time_s, size_t mutator_alloc_bytes, size_t young_gen_size, ! bool this_gc_was_young_only, ! bool this_gc_included_initial_mark); void report_ihop_statistics(); G1Predictions _predictor; G1Analytics* _analytics; G1RemSetTrackingPolicy _remset_tracker;
*** 75,85 **** double _full_collection_start_sec; jlong _collection_pause_end_millis; uint _young_list_target_length; - uint _young_list_fixed_length; // The max number of regions we can extend the eden by while the GC // locker is active. This should be >= _young_list_target_length; uint _young_list_max_length; --- 76,85 ----
*** 168,177 **** --- 168,181 ---- return _mmu_tracker->max_gc_time() * 1000.0; } private: G1CollectionSet* _collection_set; + + bool next_gc_should_be_mixed(const char* true_action_str, + const char* false_action_str) const; + double average_time_ms(G1GCPhaseTimes::GCParPhases phase) const; double other_time_ms(double pause_time_ms) const; double young_other_time_ms() const; double non_young_other_time_ms() const;
*** 187,234 **** // This set of variables tracks the collector efficiency, in order to // determine whether we should initiate a new marking. double _mark_remark_start_sec; double _mark_cleanup_start_sec; ! // Updates the internal young list maximum and target lengths. Returns the ! // unbounded young list target length. If no rs_length parameter is passed, // predict the RS length using the prediction model, otherwise use the // given rs_length as the prediction. ! uint update_young_list_max_and_target_length(); ! uint update_young_list_max_and_target_length(size_t rs_length); // Update the young list target length either by setting it to the // desired fixed value or by calculating it using G1's pause // prediction model. // Returns the unbounded young list target length. ! uint update_young_list_target_length(size_t rs_length); ! // Calculate and return the minimum desired young list target ! // length. This is the minimum desired young list length according ! // to the user's inputs. ! uint calculate_young_list_desired_min_length(uint base_min_length) const; ! ! // Calculate and return the maximum desired young list target ! // length. This is the maximum desired young list length according ! // to the user's inputs. ! uint calculate_young_list_desired_max_length() const; ! ! // Calculate and return the maximum young list target length that ! // can fit into the pause time goal. The parameters are: rs_length ! // represent the prediction of how large the young RSet lengths will ! // be, base_min_length is the already existing number of regions in ! // the young list, min_length and max_length are the desired min and ! // max young list length according to the user's inputs. ! uint calculate_young_list_target_length(size_t rs_length, ! uint base_min_length, ! uint desired_min_length, ! uint desired_max_length) const; ! ! // Result of the bounded_young_list_target_length() method, containing both the ! // bounded as well as the unbounded young list target lengths in this order. ! typedef Pair<uint, uint, StackObj> YoungTargetLengths; ! YoungTargetLengths young_list_target_lengths(size_t rs_length) const; void update_rs_length_prediction(); void update_rs_length_prediction(size_t prediction); size_t predict_bytes_to_copy(HeapRegion* hr) const; --- 191,236 ---- // This set of variables tracks the collector efficiency, in order to // determine whether we should initiate a new marking. double _mark_remark_start_sec; double _mark_cleanup_start_sec; ! // Updates the internal young gen maximum and target lengths. Returns the ! // unbounded young target length. If no rs_length parameter is passed, // predict the RS length using the prediction model, otherwise use the // given rs_length as the prediction. ! uint update_young_max_and_target_length(); ! uint update_young_max_and_target_length(size_t rs_length); // Update the young list target length either by setting it to the // desired fixed value or by calculating it using G1's pause // prediction model. // Returns the unbounded young list target length. ! uint update_young_target_length(size_t rs_length); ! // Calculate and return the minimum desired eden length based on the MMU target. ! uint calculate_desired_eden_length_by_mmu() const; ! ! // Calculate and return the desired eden length that can fit into the pause time goal. ! // The parameters are: rs_length represents the prediction of how large the ! // young RSet lengths will be, min_eden_length and max_eden_length are the bounds ! // (inclusive) within eden can grow. ! uint calculate_desired_eden_length_by_pause(double base_time_ms, ! uint min_eden_length, ! uint max_eden_length) const; ! ! // Calculates the desired eden length before mixed gc so that after adding the ! // minimum amount of old gen regions from the collection set, the eden fits into ! // the pause time goal. ! uint calculate_desired_eden_length_before_mixed(double survivor_base_time_ms, ! uint min_eden_length, ! uint max_eden_length) const; ! ! // Calculate desired young length based on current situation without taking actually ! // available free regions into account. ! uint calculate_young_desired_length(size_t rs_length) const; ! // Limit the given desired young length to available free regions. ! uint calculate_young_target_length(uint desired_young_length) const; void update_rs_length_prediction(); void update_rs_length_prediction(size_t prediction); size_t predict_bytes_to_copy(HeapRegion* hr) const;
*** 333,345 **** void record_concurrent_mark_cleanup_start(); void record_concurrent_mark_cleanup_end(); void print_phases(); - bool next_gc_should_be_mixed(const char* true_action_str, - const char* false_action_str) const; - // Calculate and return the number of initial and optional old gen regions from // the given collection set candidates and the remaining time. void calculate_old_collection_set_regions(G1CollectionSetCandidates* candidates, double time_remaining_ms, uint& num_initial_regions, --- 335,344 ----
< prev index next >