RFR: 8160539: Stack frame scanning acquires DerivedPointerTableGC_lock mutex
Kim Barrett
kim.barrett at oracle.com
Sat May 11 00:13:42 UTC 2019
Please review this change in the representation of the derived pointer table.
It was a GrowableArray of pointers to derived pointer entries, protected by
the DerivedPoitnerTableGC_lock. It is changed to a LockFreeStack of such
entries.
Running specjbb2015 with an instrumented VM found occasional contention for
that lock; roughly half of the attempts to lock it found it already held by
another thread. Comparing averages for G1 Thread Roots times for specjbb2015
before and after the change, average was reduced by 8% (1ms), max by 16%
(11.5ms), and total by 8% (27ms). Since the code involved is largely
GC-agnostic, other collectors (except Serial) should see similar improvements.
DerivedPointerTable::update_pointers() showed no significant change; it only
takes about 0.1ms with or without the change of representation.
CR:
https://bugs.openjdk.java.net/browse/JDK-8160539
Webrev:
http://cr.openjdk.java.net/~kbarrett/8160539/open.00/
Testing:
mach5 tier1-5, plus the above mentioned specjbb2015 performance testing.
More information about the hotspot-dev
mailing list