Status of indy opto, update releases...
Charles Oliver Nutter
headius at headius.com
Thu Mar 22 03:39:00 PDT 2012
Hey all! We're nearing the end of JRuby's 1.7 dev cycle, and I thought
I should check in on the status of invokedynamic optimization work,
update releases, and so on.
We've been getting more and more excellent reports of JRuby
performance far exceeding people's expectations. A number of folks are
already running JRuby 1.7dev in production because "it's the fastest
thing they've ever seen". Kudos for all the excellent work up to this
Of course, nothing's ever perfect :)
Here's a few outstanding items I know have been in progress, but we
haven't heard about recently.
* indy classloading headaches
The old NoClassDefFound problems seem to have gone away (or I just
haven't been able to trigger them) but more recently I reported on
this list about LinkageErrors that seemed to be caused by indy. I
eventually patched around them, forcing more classes to be created and
isolated...but I don't see how I could have been at fault in my code.
* degraded performance is still a big issue
I've run into a number of user cases where large methods end up
significantly slower with indy than without. The performance of
degraded (read: not jitted or not inlined) call sites and MH chains is
so bad that some cases end up worse than JRuby's interpreted mode. I
talked with Christian some weeks ago about a new plan to always
compile the MH chain and do be smarter about what gets inlined into
it, but I have not heard anything nor tracked progress since then.
The performance is bad enough that I may have to install some tiering
logic into JRuby's compiler so that methods over a certain size don't
use invokedynamic at all. It will be messy.
* u4? u6?
If I remember right, the original plan was to have the first big round
of optimizations in u2, and then the "right way" of optimizing along
with stability issues fixed for u4. With u4 rapidly locking down (did
I see something about phase 2?) where do we stand on getting indy
updates into that release?
As always, I'm standing by to help test, benchmark, profile, and read
assembly dumps. I've not *yet* had a change to start working on
Hotspot itself, but there may be some interesting changes coming up
that will make it easier for me to do so :)
Anyway, thanks for everything, and I hope indy work is still moving
forward. It really is amazing.
OH, P.S. I'm delivering a keynote at JAXConf 2012 on invokedynamic!
I'd love to get as much information as possible about current and
future status of indy in OpenJDK.
More information about the mlvm-dev