RFR: 8325403: Add SystemGC JMH benchmarks [v2]

Stefan Johansson sjohanss at openjdk.org
Tue Feb 13 08:48:06 UTC 2024


On Mon, 12 Feb 2024 15:18:08 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:

>> Stefan Johansson has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Restructure and rename
>
> 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.)

On my box (not binding to a single NUMA node) the error is still fairly big for some cases with just 10 forks. For example:

Benchmark                       Mode  Cnt    Score    Error  Units
AllLive.gc                        ss    5   61.810 ? 12.743  ms/op
DifferentObjectSizesTreeMap.gc    ss    5  106.660 ? 33.727  ms/op
HalfDeadFirstPart.gc              ss    5   45.340 ?  7.520  ms/op
HalfDeadSecondPart.gc             ss    5   43.968 ?  8.859  ms/op
HalfHashedHalfDead.gc             ss    5  105.144 ? 13.341  ms/op
OneBigObject.gc                   ss    5  114.798 ? 19.266  ms/op
---
Benchmark                       Mode  Cnt    Score    Error  Units
AllLive.gc                        ss   10   61.222 ?  4.838  ms/op
DifferentObjectSizesTreeMap.gc    ss   10  110.614 ? 11.748  ms/op
HalfDeadFirstPart.gc              ss   10   46.089 ?  3.915  ms/op
HalfDeadSecondPart.gc             ss   10   46.085 ?  4.231  ms/op
HalfHashedHalfDead.gc             ss   10  105.468 ?  5.365  ms/op
OneBigObject.gc                   ss   10  118.285 ?  6.044  ms/op
---
Benchmark                       Mode  Cnt    Score   Error  Units
AllLive.gc                        ss   25   59.683 ? 2.747  ms/op
DifferentObjectSizesTreeMap.gc    ss   25  107.748 ? 5.235  ms/op
HalfDeadFirstPart.gc              ss   25   46.860 ? 1.570  ms/op
HalfDeadSecondPart.gc             ss   25   44.730 ? 1.261  ms/op
HalfHashedHalfDead.gc             ss   25  104.233 ? 2.418  ms/op
OneBigObject.gc                   ss   25  114.868 ? 2.398  ms/op


Especially for `DifferentObjectSizesTreeMap` the error is quite big even with 25 invocation. Since none of these tests will be run in Mach5 or Perf-aurora without anyone explicitly asking for it I think the additional runtime is worth getting scores with higher confidence.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17784#discussion_r1487414694


More information about the hotspot-gc-dev mailing list