RFR: 8322484: 22-b26 Regression in J2dBench-bimg_misc-G1 (and more) on Windows-x64 and macOS-x64 [v3]
Kim Barrett
kbarrett at openjdk.org
Fri Jan 26 14:35:33 UTC 2024
On Fri, 26 Jan 2024 14:03:57 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:
>> Hi all,
>>
>> please review this improvement to managing region pin counts in g1.
>>
>> Some applications do millions of `Get/ReleasePrimitiveArrayCritical` operations per second, in particular some of the j2dbench benchmarks (e.g. vimg_copyarea 10M/s), on some platforms. Every pin/unpin results in an atomic operation that is the cause for these slowdown.
>>
>> Only Windows seems to be significantly affected.
>>
>> This suggested change implements a per-region thread local cache storing the current pin/unpin refcount difference, writing it back only when a thread pins/unpin an object in a different region.
>>
>> For these benchmarks this often reduces the amount of atomic operations to none, or a few handful; the worst improvement I have seen is that effective atomic operations were reduced to 1/10th. Overall all the j2dbench benchmark scores improve.
>>
>> There is a remaining issue with the `vimg_shapes_gradient` J2dbench subbenchmark: comparing the original results (before integration of region pinning) with latest jdk23 results, there is a regression of about 5%; this is caused by the backout of a bad compiler change (https://bugs.openjdk.org/browse/JDK-8322985). This will be fixed by its redo CR https://bugs.openjdk.org/browse/JDK-8323116.
>>
>> Testing: tier1-3, j2dbench, dacapo, specj*, renaissance benchmarks
>>
>> Thanks,
>> Thomas
>
> Thomas Schatzl has updated the pull request incrementally with one additional commit since the last revision:
>
> remove whitespace
One minor nit in comment. Otherwise looks good.
src/hotspot/share/gc/g1/g1RegionPinCache.hpp line 36:
> 34: // Keeping such a cache avoids the expensive atomic operations when updating the
> 35: // pin count for the very common case that the application pins and unpins the
> 36: // same object with any interleaving by a garbage collection or pinning/unpinning
s/with/without/
-------------
Marked as reviewed by kbarrett (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/17552#pullrequestreview-1845865112
PR Review Comment: https://git.openjdk.org/jdk/pull/17552#discussion_r1467722389
More information about the hotspot-gc-dev
mailing list