RFR: 8370947: Mitigate Neoverse-N1 erratum 1542419 negative impact on GCs and JIT performance [v13]
Evgeny Astigeevich
eastigeevich at openjdk.org
Wed Dec 3 18:48:32 UTC 2025
On Wed, 3 Dec 2025 16:10:55 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> Evgeny Astigeevich has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 19 commits:
>>
>> - Fix linux-cross-compile build aarch64
>> - Merge branch 'master' into JDK-8370947
>> - Remove trailing whitespaces
>> - Add support of deferred icache invalidation to other GCs and JIT
>> - Add UseDeferredICacheInvalidation to defer invalidation on CPU with hardware cache coherence
>> - Add jtreg test
>> - Fix linux-cross-compile aarch64 build
>> - Fix regressions for Java methods without field accesses
>> - Fix code style
>> - Correct ifdef; Add dsb after ic
>> - ... and 9 more: https://git.openjdk.org/jdk/compare/3d54a802...4b04496f
>
> test/micro/org/openjdk/bench/vm/gc/GCPatchingNmethodCost.java line 184:
>
>> 182: @Benchmark
>> 183: @Warmup(iterations = 0)
>> 184: @Measurement(iterations = 1)
>
> Not sure what is the intent here. Maybe you wanted `@BenchmarkMode(OneShot)` instead?
The current algorithm:
- Create an object used in Java methods.
- Run the methods in the interpreter.
- Compile the methods.
- Make the object garbage collectable.
- Run GC (we measure this).
There are not many things to warm-up. And setting up everything for multiple iterations of GC runs might be expensive. Instead we use forks.
IMO, Yes it is `@BenchmarkMode(OneShot)`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/28328#discussion_r2586236955
More information about the shenandoah-dev
mailing list