Open DanHeidinga opened 4 years ago
@fjeremic If this is missing anything, feel free to edit & add any links / descriptions / etc
@fjeremic If this is missing anything, feel free to edit & add any links / descriptions / etc
Excellent summary this far. Thank you for putting this together. I've added another future area for a caching prototype I have which I suspect will be subject to debate on the PR once it is opened. I expect to have something in PR form by early next week I hope. My current focus is on cleaning up #7765 to get that in a deliverable state.
A wild secondary idea (for general string interning) to consider alleviating the StringTable lock: two staged StringTable --- one table is read-only accumulating newly interned strings only during GC (for example); another table needing lock to accumulate during mutators running. The stable state doesn't need lock. One table structure overhead ...
We should be applying the same optimizations to the JDK11 StackWalker api as well - see https://github.com/eclipse/openj9/blob/1dd14da6ca1351c8ab42f40b0c7e324c39ab102e/runtime/jcl/common/java_lang_StackWalker.cpp#L139
Links to the interning of method names in other areas:
We've been doing some work to optimize stacktraces. OpenJ9 currently generates stacktraces using two passes:
The current focus is on optimizing the Pass 2 part.
Work so far:
[x] #7673 (merged)
[x] #7676 (merged)
[x] #7765 (merged)
[x] #7784 (merged)
packageNameLength
calls in JDK11 as the Module can be fetched directly from the Class[x] #8615 Pass the J9Class into the
iterateStackTrace
call back in addition to the current J9Classloader and namepeekClassHashTable
calls in the iterator as the class would already be availableFuture areas:
stringComparatorFn
is expensive. Optimize the lookup by passing both a comparator and equals function to the OMR collisionResilentHashTablehttps://github.com/eclipse/openj9/issues/7766
Areas to circular back to once the above is complete:
Rejected approaches:
iterateStackTrace
methodPC