RFR: 8332587: RISC-V: secondary_super_cache does not scale well [v6]
Hamlin Li
mli at openjdk.org
Fri Jun 14 12:22:14 UTC 2024
On Fri, 14 Jun 2024 03:40:36 GMT, Gui Cao <gcao at openjdk.org> wrote:
>> Implementation of subtype checking [JDK-8180450](https://bugs.openjdk.org/browse/JDK-8180450) for linux-riscv64.
>> This optimization depends on availability of the Zbb extension which has the cpop instruction.
>>
>> ### Correctness testing:
>>
>> - [x] Run tier1-3, hotspot:tier4 tests on SOPHON SG2042 (release)
>> - [x] Run tier1-3 tests with -XX:+UseRVV on qemu 8.1.0 (fastdebug)
>> - [x] Run all of tier1 with `-XX:+VerifySecondarySupers`
>>
>> ### JMH tested on Banana Pi BPI-F3 board (has Zbb) and Enable UseZbb, Not Enable UseZba, UseZbs
>> Original:
>>
>> Benchmark Mode Cnt Score Error Units
>> SecondarySuperCacheHits.test avgt 15 11.375 ± 0.071 ns/op
>> SecondarySuperCacheInterContention.test avgt 15 646.087 ± 32.587 ns/op
>> SecondarySuperCacheInterContention.test:t1 avgt 15 600.090 ± 83.779 ns/op
>> SecondarySuperCacheInterContention.test:t2 avgt 15 692.084 ± 73.218 ns/op
>> SecondarySupersLookup.testNegative00 avgt 15 16.420 ± 0.239 ns/op
>> SecondarySupersLookup.testNegative01 avgt 15 18.307 ± 0.260 ns/op
>> SecondarySupersLookup.testNegative02 avgt 15 21.695 ± 0.458 ns/op
>> SecondarySupersLookup.testNegative03 avgt 15 24.855 ± 0.664 ns/op
>> SecondarySupersLookup.testNegative04 avgt 15 27.305 ± 0.522 ns/op
>> SecondarySupersLookup.testNegative05 avgt 15 29.719 ± 0.385 ns/op
>> SecondarySupersLookup.testNegative06 avgt 15 32.231 ± 0.498 ns/op
>> SecondarySupersLookup.testNegative07 avgt 15 33.747 ± 0.603 ns/op
>> SecondarySupersLookup.testNegative08 avgt 15 35.856 ± 0.629 ns/op
>> SecondarySupersLookup.testNegative09 avgt 15 37.077 ± 0.546 ns/op
>> SecondarySupersLookup.testNegative10 avgt 15 39.408 ± 0.465 ns/op
>> SecondarySupersLookup.testNegative16 avgt 15 51.041 ± 0.547 ns/op
>> SecondarySupersLookup.testNegative20 avgt 15 58.722 ± 0.922 ns/op
>> SecondarySupersLookup.testNegative30 avgt 15 77.310 ± 0.654 ns/op
>> SecondarySupersLookup.testNegative32 avgt 15 81.116 ± 0.854 ns/op
>> SecondarySupersLookup.testNegative40 avgt 15 96.311 ± 0.840 ns/op
>> SecondarySupersLookup.testNegative50 avgt 15 115.427 ± 0.838 ns/op
>> SecondarySupersLookup.testNegative55 avgt 15 124.371 ± 1.076 ns/op
>> SecondarySupersLookup.testNegative56 avgt 15 126.796 ± 0.916 ns/op
>> SecondarySupersLookup.testNegative57 avgt 15 127.952 ± 1.202 ns/op
>> SecondarySupersLookup.testNegative58 avgt 15 131.956 ± 4.515 ns/op
>> Seco...
>
> Gui Cao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 12 additional commits since the last revision:
>
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Update ins_cost for PartialSubtypeCheck
> - Code Format
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Polish Code Comment
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Fix Code format
> - Fix for Hamlin comment
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Fix client VM build
> - ... and 2 more: https://git.openjdk.org/jdk/compare/8daf2fea...142d7677
Thanks for your patience.
I was thinking to jump to `L_bitmap_full` in `lookup_secondary_supers_table_slow_path`, in this way I guess it might address the performance issue when bitmap full, and not introduce regression in other cases. But I'm not sure how much complication will be brought into the implementation. So, let's skip this rare case optmization.
Some minor comment, otherwise looks good.
src/hotspot/cpu/riscv/stubGenerator_riscv.cpp line 5613:
> 5611: }
> 5612:
> 5613: #ifdef COMPILER2
Maybe put other "secondary super table" related code also inside COMPILER2 macro?
-------------
PR Review: https://git.openjdk.org/jdk/pull/19320#pullrequestreview-2118147392
PR Review Comment: https://git.openjdk.org/jdk/pull/19320#discussion_r1639676041
More information about the hotspot-dev
mailing list