RFR: 8270100: Fix some inaccurate GC logging

Albert Mingkun Yang ayang at openjdk.java.net
Fri Jul 9 21:32:52 UTC 2021


On Thu, 8 Jul 2021 15:19:01 GMT, Volker Simonis <simonis at openjdk.org> wrote:

> If running with `-Xlog:gc+heap*=trace` the JVM will print the extra per thread amount which is added to the new generation on resize:
> 
> [0,105s][debug][gc,ergo,heap ] GC(0) New generation size 34112K->34176K [eden=27392K,survivor=3392K]
> [0,105s][trace][gc,ergo,heap ] GC(0) [allowed 0K extra for 0 threads]
> 
> Currently this will always print "0K extra for 0 threads" no matter how much extra space was added.
> 
> Also, the shrink factor will always be printed to be 0%, even if we run with `-XX:-ShrinkHeapInSteps` which pins the shrink factor at 100%:
> 
> [13,213s][trace][gc,heap ] GC(34) shrink_bytes: 463564,0K current_shrink_factor: 0 new shrink factor: 0 _min_heap_delta_bytes: 192,0K
> [13,239s][trace][gc,heap ] GC(34) Shrinking tenured generation from 531852K to 68288K
> 
> 
> The fix is trivial.

Thank you for the instruction, with which I can reproduce both issues.

As for the first fix, `threads_count` and `thread_increase_size` don't really depend on `adjust_for_thread_increase`, right? Then how about just changing the values in the log, sth like:


int threads_count = Threads::number_of_non_daemon_threads();;
size_t thread_increase_size = threads_count * NewSizeThreadIncrease;
log_trace(gc, ergo, heap)(
        "  [allowed " SIZE_FORMAT "K extra for %d threads]",
          thread_increase_size/K, threads_count);


As for the second fix, I think the following is more symmetric:


if (ShrinkHeapInSteps) {
  // assign current_shrink_factor and _shrink_factor
} else {
  // Shink 100% to the desired value
  _shrink_factor = current_shrink_factor = 100;
}


PS: currently, the assignment of `current_shrink_factor` is done at the beginning of the method, but it's quite far from its actual usage. Maybe move it to the if-branch above.


assert(_shrink_factor <= 100, "invalid shrink factor");
size_t current_shrink_factor = _shrink_factor;
_shrink_factor = 0;

-------------

PR: https://git.openjdk.java.net/jdk/pull/4727


More information about the hotspot-gc-dev mailing list