eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.28k stars 721 forks source link

Queued methods not reset during code cache flush #20629

Open JamesKingdon opened 4 hours ago

JamesKingdon commented 4 hours ago

Tested with 17.0.12.1 on Power linux, but problem is likely common to all versions and platforms.

When running in FSD mode class redefinition causes all methods to be unloaded from the code cache. However the existing code fails to reset the extra field for methods that have been queued but not yet compiled. This means that the queued methods can never be compiled during the remainder of the run and this can cause a significant performance penalty. For example,

Before change:

Threads     Throughput
    1         3653
    2         7501
    3        11334
    4        16511

After change:

Threads     Throughput
    1         6702
    2        14574
    3        21913
    4        29225

I have created https://github.com/eclipse-openj9/openj9/pull/20628 for this problem.

github-actions[bot] commented 4 hours ago

Issue Number: 20629 Status: Open Recommended Components: comp:vm, comp:test, comp:build