RFR: Update nmethod caching and clean up unused/duplicate methods [v8]
Ashutosh Mehra
asmehra at openjdk.org
Fri Jun 13 17:30:40 UTC 2025
On Thu, 12 Jun 2025 20:12:36 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:
>> This PR updates nmethod caching to be based on caching of CodeBlob. It also cleans up some dead code and duplicate methods.
>
> Ashutosh Mehra has updated the pull request incrementally with one additional commit since the last revision:
>
> Add back CodeBuffer::clear_strings()
>
> Signed-off-by: Ashutosh Mehra <asmehra at redhat.com>
I tested the changes with spring-boot-getting-started and JavacBench. The logs indicate number of nmethods stored and loaded are more or less the same. Performance change is also negligible or within margin of error.
For spring-boot-getting-started:
Run,Old CDS + AOT,New CDS + AOT
1,323,326
2,324,324
3,323,323
4,326,329
5,324,324
6,323,326
7,328,332
8,320,324
9,323,323
10,324,325
Geomean,323.79,325.59
Stdev,1.99,2.73
For JavacBench:
Run,Old CDS + AOT,New CDS + AOT
1,537,544
2,534,548
3,530,538
4,546,540
5,537,527
6,535,529
7,540,544
8,540,545
9,538,548
10,544,540
Geomean,538.08,540.26
Stdev,4.46,6.91
Comparing AOT Code Cache stats generated by Xlog:init for spring-boot-getting-started...
premain:
[0.316s][info][init] AOT Code Cache statistics (when closed):
[0.316s][info][init] Adapter: total=535
[0.316s][info][init] Code: total=2826 loaded=2553 invalidated=194 failed=9
[0.316s][info][init] AOT Code T1 total=131 loaded=127
[0.316s][info][init] AOT Code T2 total=1870 loaded=1857 invalidated=18 failed=9
[0.316s][info][init] AOT Code T4 total=415 loaded=173 invalidated=5
[0.316s][info][init] AOT Code T5 total=410 loaded=396 invalidated=171 has_clinit_barriers=302
and with this patch:
[0.316s][info][init] AOT Code Cache statistics (when closed):
[0.316s][info][init] Adapter: total=535
[0.316s][info][init] Code: total=2849 loaded=2557 invalidated=182 failed=9
[0.316s][info][init] AOT Code T1 total=131 loaded=127
[0.316s][info][init] AOT Code T2 total=1876 loaded=1863 invalidated=18 failed=9
[0.316s][info][init] AOT Code T4 total=423 loaded=160 invalidated=6
[0.316s][info][init] AOT Code T5 total=419 loaded=407 invalidated=158 has_clinit_barriers=311
Similarly for JavacBench, premain:
[0.270s][info][init] AOT Code Cache statistics (when closed):
[0.270s][info][init] Adapter: total=430
[0.270s][info][init] Code: total=3049 loaded=2816 invalidated=322
[0.270s][info][init] AOT Code T1 total=93 loaded=93
[0.270s][info][init] AOT Code T2 total=1904 loaded=1899
[0.270s][info][init] AOT Code T4 total=527 loaded=299 invalidated=24
[0.270s][info][init] AOT Code T5 total=525 loaded=525 invalidated=298 has_clinit_barriers=359
and with this patch:
[0.246s][info][init] AOT Code Cache statistics (when closed):
[0.246s][info][init] Adapter: total=430
[0.246s][info][init] Code: total=3077 loaded=2858 invalidated=385
[0.246s][info][init] AOT Code T1 total=93 loaded=93
[0.246s][info][init] AOT Code T2 total=1837 loaded=1832
[0.246s][info][init] AOT Code T4 total=574 loaded=360 invalidated=25
[0.246s][info][init] AOT Code T5 total=573 loaded=573 invalidated=360 has_clinit_barriers=409
-------------
PR Comment: https://git.openjdk.org/leyden/pull/71#issuecomment-2971044521
More information about the leyden-dev
mailing list