RFR: 8346470: Improve WriteBarrier JMH to have old-to-young refs

Thomas Schatzl tschatzl at openjdk.org
Thu Mar 13 15:46:00 UTC 2025


On Wed, 12 Mar 2025 15:48:20 GMT, Eric Caspole <ecaspole at openjdk.org> wrote:

> Adds new cases based on the existing ones using an extra iteration setup to allocate into young gen, allowing to test old-to-young stores etc, where the existing code is all old-to-old.
> 
> Here is a run on a standard OCI A1.160 with JDK 25:
> 
> Benchmark                                                                         Mode  Cnt     Score    Error  Units
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathNullLarge          avgt   12  3448.826 ±  1.620  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathNullSmall          avgt   12    63.740 ±  0.151  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathNullYoungLarge     avgt   12  3448.353 ±  0.860  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathNullYoungSmall     avgt   12    63.565 ±  0.132  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathOldToYoungLarge    avgt   12  4476.390 ±  0.930  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathOldToYoungSmall    avgt   12    73.517 ±  0.082  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathRealLarge          avgt   12  3103.911 ±  2.079  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathRealSmall          avgt   12    57.549 ±  0.512  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathYoungToOldLarge    avgt   12  9587.762 ±  2.044  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathYoungToOldSmall    avgt   12   157.244 ±  0.169  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathYoungToYoungLarge  avgt   12  3103.191 ±  1.100  ns/op
> WriteBarrier.WithDefaultUnrolling.testArrayWriteBarrierFastPathYoungToYoungSmall  avgt   12    57.392 ±  0.624  ns/op
> WriteBarrier.WithDefaultUnrolling.testFieldWriteBarrierFastPath                   avgt   12     2.668 ±  0.001  ns/op
> WriteBarrier.WithDefaultUnrolling.testFieldWriteBarrierFastPathYoungRef           avgt   12     9.337 ±  0.001  ns/op
> WriteBarrier.WithoutUnrolling.testArrayWriteBarrierFastPathNullLarge              avgt   12  3449.234 ±  1.840  ns/op
> WriteBarrier.WithoutUnrolling.testArrayWriteBarrierFastPathNullSmall              avgt   12    63.720 ±  0.079  ns/op
> WriteBarrier.WithoutUnrolling.testArrayWriteBarrierFastPathNullYoungLarge         avgt   12  3448.055 ±  0.665  ns/op
> WriteBarrier.WithoutUnrolling.testArrayWriteBarrierFastPathNullYoungSmall         avgt   12    63.555 ±  0.116  ns/op
> WriteBarrier.Witho...

Some minor formatting issues...

test/micro/org/openjdk/bench/vm/compiler/WriteBarrier.java line 127:

> 125:     @Setup(Level.Iteration)
> 126:     public void setupIteration() {
> 127:         // Reallocate each iteration to ensure they are in young gen

Suggestion:

        // Reallocate target objects each iteration to ensure they are in young gen.

test/micro/org/openjdk/bench/vm/compiler/WriteBarrier.java line 185:

> 183:         }
> 184:     }
> 185: 

Suggestion:



For consistent spacing between benchmarks.

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

Changes requested by tschatzl (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/24010#pullrequestreview-2682458764
PR Review Comment: https://git.openjdk.org/jdk/pull/24010#discussion_r1993806737
PR Review Comment: https://git.openjdk.org/jdk/pull/24010#discussion_r1993805710


More information about the hotspot-gc-dev mailing list