Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

VMIL keynote : Lessons from a production JVM runtime developer

1.
The good, the good enough, and the
things we wish we had done better
Lessons from a production JVM runtime developer
Mark Stoodley
“Production JVM Runtime Developer” at IBM
Project co-lead for Eclipse OMR

2.
Lessons from a Production JVM
Runtime Developer
The good, the good enough, and the things we wish we had done better
Mark Stoodley
“Production JVM (J9) Runtime Developer” at IBM
Project co-lead for Eclipse OMR

3.
3
Important disclaimers
• THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.
• WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION
CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED.
• ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED
ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR
INFRASTRUCTURE DIFFERENCES.
• ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.
• IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT
PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.
• IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT
OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.
• NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:
– CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS
OR THEIR SUPPLIERS AND/OR LICENSORS

4.
Complete implementation
Robust quality even under high stress
Scalable performance
Reliable and stable service
Wide variety of deployed workloads
4
Some Production Runtime Characteristics

5.
Sounds pretty constrained
It is, but it’s still possible to innovate
5

22.
“Lesson” #6
There’s a new open source JIT in town in OMR
60+ optimizations and analyses
Create your own optimization sequences
New JitBuilder library to simplify IL generation
22

23.
Final bit of advice:
JIT and interpreter have each other’s backs
JIT: make simple stuff fast, let interpreter do hard stuff
Interpreter: be simple and get everything 100% right,
let JIT make the right things fast
23

28.
Proof point: Just in Time Compilers
• CRuby, CPython, SOM++ do not have JIT compilers
• Our efforts to date have high focus on compatibility:
• Compile native instructions for methods and blocks
• Avoid big changes to how existing runtimes work (ease adoption)
• Consistent behaviour for compiled code vs interpreted code
• No restrictions on native code used by extension modules: we can run Rails!
• No benchmark tuning or specials, no profile exploitation (yet)
• Recent focus has been 100% on open sourcing JIT
• Not on language ports
28

30.
Open J9 is also coming!
We’re working on it around our
next IBM SDK for Java release
30

31.
Connecting production runtimes and research
• OMR and Open J9: production runtime technology in open source projects
• IBM developers working directly in open source projects
• Not research: this is how IBM builds its runtimes going forward
• Opportunity for researchers and runtime developers to work side by side
• Flexible licensing (EPL 1.0 or AL 2.0)
• Level playing field
• OMR and Open J9 technology could become testbed for runtimes research
• Early days: APIs are still evolving and improving around solid technology base
• Realistic path for research work to become active production code
• Ideally, path for research to influence more than one language runtime
31