We'd like to enchance G1's PrintGCDetails output with the following changes:
Measure and report per-worker Parallel Other time, instead of an overall average (this way we can see if a particular worker had an unaccounted for phase).
The per-worker parallel time (the duration of the worker's work() method) is, in some cases, inconsistent than the global parallel time (the interval from when all workers are started to when all workers have finished). We have seen cases where the global parallel time is up to 35ms-37ms higher than the per-worker measurement. We suspect this is because some destructors are executed at the end of the work() method and outside the timing scope. We should fix that and make sure that those two measurements are consistent.
Reorder the reported times of the various GC phases to make sure their order reflects the actual order the phases take place in during a GC.
We suspect that the reported RS updating times include non-RS updating components. We should investigate this and fix as necessary.
Finally, print the number of eden, survivor, and old regions that are about to be collected.