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