RFR: 8325403: Add SystemGC JMH benchmarks [v2]

Albert Mingkun Yang ayang at openjdk.org
Mon Feb 12 15:21:03 UTC 2024


On Mon, 12 Feb 2024 13:23:40 GMT, Stefan Johansson <sjohanss at openjdk.org> wrote:

>> Please review this change to add some System GC JMH benchmarks.
>> 
>> **Summary**
>> When developing and improving the Full GC implementation for the different GCs, using `System.gc()` to test performance is sometime very useful. This change adds a set of System GC benchmarks using JMH. The tests all have the same structure, a `@Setup` function that generates heap contents and a `@Benchmark` function which only calls `System.gc()`. The different scenarios covers some basic use-cases but more can certainly be added going forward. 
>> 
>> Since the benchmark function is just a single call to trigger the GC it makes sense to use the single shot JMH mode and fork a new JVM for each run. The tests also specify default heap options to avoid triggering GC during object creation to give all runs more or less the same heap layout.
>> 
>> **Testing**
>> Local and aurora testing verifying that results are fairly stable.
>
> Stefan Johansson has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Restructure and rename

Marked as reviewed by ayang (Reviewer).

test/micro/org/openjdk/bench/vm/gc/system_gc/AllDead.java line 39:

> 37: 
> 38: @BenchmarkMode(Mode.SingleShotTime)
> 39: @Fork(value=25, jvmArgsAppend={"-Xmx5g", "-Xms5g", "-Xmn3g"})

It takes ~4.5 min on my box to run all of them, `make CONF=release test TEST='micro:vm.gc.system_gc'`. The variance is rather small, so I wonder this number can be reduced, say 10? (Ofc, this can be easily overwritten on the command line.)

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

PR Review: https://git.openjdk.org/jdk/pull/17784#pullrequestreview-1875478150
PR Review Comment: https://git.openjdk.org/jdk/pull/17784#discussion_r1486330279


More information about the hotspot-gc-dev mailing list