RFR: 8257774: G1: Trigger collect when free region count drops below threshold to prevent evacuation failures [v5]

Aditya Mandaleeka adityam at openjdk.java.net
Thu May 13 02:42:00 UTC 2021


On Mon, 3 May 2021 17:18:05 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:

>> Aditya Mandaleeka has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Remove temp comment.
>
> Fyi, I've been running this change through our performance test suite, and there are two notable differences in results in the Renaissance benchmark suite (http://renaissance.dev):
> * Renaissance-Neo4jAnalytics improves in scores (avg. runtime) by ~10%
> * Renaissance-Scrabble decreases in scores (avg. runtime) by ~10%
> 
> For the latter more concerning result in renaissance-scrabble, we use the JMH wrappers which should be part of the benchmark suite (I think), and run jmh with `-t 1 -i 15 -wi 25 -f 10`.
> 
> Original results:
> 
> Result "org.renaissance.jdk.streams.JmhScrabble.runOperation":
>   N = 150
>   mean =    232.878 ±(99.9%) 5.846 ms/op
> 
> Changes:
> 
> Result "org.renaissance.jdk.streams.JmhScrabble.runOperation":
>   N = 150
>   mean =    265.658 ±(99.9%) 11.011 ms/op
> 
> 
> There are significant differences I can't explain right now. It may be due to (since we do not use any special VM options except logging) heap sizing or similar, but can you look into this a bit?
> I'll probably retry with a rebase on latest, maybe I screwed up with the builds. There is no proactive gc in this particular benchmark run, but I can see that e.g. neo4j has some, so builds should be correct.

@tschatzl Sorry for the delay, I was wrapped up in some other work and then wasn't feeling well the last couple of days.

I finally had a chance to run the Renaissance-Scrabble benchmark with and without this change, but I was not able to reproduce the delta you observed.

My "before" build is based on commit https://github.com/adityamandaleeka/jdk/commit/28c35aedd38c5d3b3053c737a65e0294e4606d65, and delivered the following result using the jmh flags you listed:


Result "org.renaissance.jdk.streams.JmhScrabble.runOperation":
  N = 150
  mean =    352.823 ±(99.9%) 3.996 ms/op


My "after" build is based on this PR of course and had the following result:


Result "org.renaissance.jdk.streams.JmhScrabble.runOperation":
  N = 150
  mean =    348.556 ±(99.9%) 3.397 ms/op


I also tried running the Neo4jAnalytics one but got "java.lang.RuntimeException: Benchmark 'neo4j-analytics' is not compatible with this JVM version!".

Looking at the benchmark sources, I found `@SupportsJvm("15")` which I guess is the reason, but I didn't want to change it and rebuild/re-run without first confirming whether or not you have any other changes in your version of the benchmark.

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

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



More information about the hotspot-gc-dev mailing list