RFR: 8339114: DaCapo xalan performance with -XX:+UseObjectMonitorTable
David Holmes
dholmes at openjdk.org
Wed Mar 26 02:40:14 UTC 2025
On Tue, 18 Mar 2025 12:41:44 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
> - When successfully looked up an OM in the OMCache, then make it avaiable in the BasicLock cache. Use that cache whenever possible.
> - When successfully looked up an OM in the OMCache, then don't push-back the OM on that cache to avoid shuffling the cache on each monitor enter.
> - In the runtime path of monitorexit, attempt to use the BasicLock cache, then the OMCache, and only look up in the table when the caches failed.
> - Some small code shufflings.
>
> I did 50 runs of xalan, each of which do 10 warmup iterations before doing one measurement. The following results are the averages of the measurement iterations across the 50 runs:
> without-OMT: 773.3 ms
> with-OMT: 797.28 ms
>
> That is still a regression of ~3%
src/hotspot/share/runtime/lightweightSynchronizer.cpp line 749:
> 747: monitor = lock->object_monitor_cache();
> 748: if (monitor == nullptr) {
> 749: monitor = JavaThread::cast(current)->om_get_from_monitor_cache(object);
`current` is already a `JavaThread`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24098#discussion_r2013297789
More information about the hotspot-runtime-dev
mailing list