JDK-7050392 : G1: Introduce flag to generate a log of the G1 ergonomic decisions
Type:Enhancement
Component:hotspot
Sub-Component:gc
Affected Version:hs22
Priority:P4
Status:Closed
Resolution:Fixed
OS:generic
CPU:generic
Submitted:2011-06-01
Updated:2013-10-04
Resolved:2011-11-28
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
It would be good to have a -XX parameter that enables verboseness of the G1 ergonomic decisions to be able to easily understand why G1 makes the decisions it does.
PUBLIC COMMENTS
Ultimately, we'd like to be able to turn on and off the ergo decision verboseness for each heuristic separately. Additionally, it would also be helpful to introduce several verboseness levels (in the simplest case: low and high) to adjust the logging amount vs. how informative the logging is trade-off (this verboseness level can either be applied per heuristic or globally). However, given that we don't currently have cmd line parameters to do the above we'll simply use the existing PrintAdaptiveSizePolicy parameter to turn on/off logging for all heuristics and hard-code the verboseness level to high. If we introduce more detailed parameters in the future we might revisit this.
29-08-2011
PUBLIC COMMENTS
Here's a progress update on this CR:
The ergonomic decision log will containg a series of records. Each such record will containg at least the following:
- an action taken as a result of an ergonomic decision
- an optional reason why said action was taken
- an optional set of values which contributed to the ergonomic decision
and each record will be associated with a heuristic that is affected by that action.
The format of each record is the following:
8.675: [G1Ergonomics (Concurrent Cycles) request concurrent cycle initiation, reason: occupancy higher than threshold, occupancy: 31346656 bytes, threshold: 30198960 bytes (45.00 %)]
This is broken down as follows:
8.675 : a time stamp
[G1Ergonomics ... ]: standard prefix / suffix to be able to easily identify such a record
(Concurrent Cycles) : the heuristic this record is associated with
request concurrent cycle initiation : the action
occupancy higher than threshold : the (optional) reason
occupancy / threshold : the (optional) values
29-08-2011
PUBLIC COMMENTS
As part of this CR we'll push the framework that we'll use for the ergo decision logging, as well the code to generate records for four heuristics:
- Heap Sizing : when we expand / shrink the heap and why
- CSet Construction : how we construct the CSet, why we stop adding old regions to it, etc.
- Concurrent Cycles : why we initiate a concurrent cycle and why
- Partially-Young GCs : why we start and stop doing partially-young GCs and why
We're planning two more heuristics (young gen sizing and pause time prediction) but we'll do these as part of a separate CR (7084525: G1: Generate ergonomic decision log records for young gen sizing and for pause prediction).