Project purpose
Open-sourced from IBM, “Eclipse OMR" is enterprise-class runtime technology that delivers high performance without sacrificing versatility or robustness.”
Our goal is to enhance the capabilities of OMR for multi-language interoperability (particularly regarding performance and security, and effective exploitation of the parallelism provided by modern hardware) and resource constrained environments (the embedded computing market, including the Internet-of-Things and mobile computing).
Project summary
Building the runtime technology for a new language to match the capabilities of existing mature languages typically requires tremendous, costly effort, as does building new runtime components from scratch, designed from the outset for reuse.
Adding additional language support within an existing mature runtime environment will likely have hampered efficiency due to implementation trade-offs. As an alternative, IBM has reorganized the runtime components of an existing commercial JVM implementation (the IBM Developer’s Kit for Java) to separate the pure Java implementation (Eclipse OpenJ9) from the parts that provide key runtime capabilities.
The resulting open-source Eclipse OMR project provides a runtime technology platform consisting of core components as a toolbox for building language runtimes upon which many of IBM products run, including Websphere, Bluemix and QRadar.
With IBM focused on core functionality, the CAS–Atlantic is playing a key role in developing additional tools to contribute to the development of OMR. CAS–Atlantic is focusing on two distinct, but related themes. The first is a port of the Python language to OMR, and then to use it as a testbed to study issues of multi-language interoperability, particularly regarding performance and security, and effective exploitation of the parallelism provided by modern hardware.
Improving the performance of database management systems (DBMS) is an important demonstration to IBM. The second theme is expanding OMR to better perform in resource constrained environments, the embedded computing market, including the Internet-of-Things and mobile computing. Particular emphasis will be placed on realtime scheduling, and compilation efficiencies, automated memory management and garbage collection in these constrained environments.
At its peak, CAS–Atlantic’s collaboration with IBM engaged five faculty members and over 30 students, postdocs and research assistants.
Themes and subprojects
Theme 1. Python on OMR
1.1. Interpreter integration
The goal is to port a Python runtime to OMR. The focus is on demonstrating the reusability of OMR garbage collection (GC) and just-in-time compilation components. Research is being specifically conducted into extending OMR in novel ways to better support Python (or vice-versa) and balancing fast start-up time for scripting applications against good performance for compute-intensive workloads.
1.2. High performance language interoperability
The goal is advancing the state-of-the-art in language interoperability. The focus will be on providing cross-language interoperability between Python and Java, particularly in the context of data-intensive applications, and providing a flexible framework to improve the performance of cross-language serialization and deserialization.
1.3: Compilation of SQL queries for efficient execution plan generation
The goals are to demonstrate the viability of just-in-time compilation in a production ready database system; to demonstrate the applicability of compilation-based approaches in a distributed in-memory query execution engine; and to investigate how to develop an end-to-end query processing system that supports research in query compilation and exploration of ideas in this domain.
Theme 2. OMR in resource constrained environments
2.1. Embedded/Internet-of-Things/mobile OMR
The goal is to port the current OMR environment to the 64-bit ARM platform. The focus is on adapting the OMR technology to support a diverse resource constrained system while maintaining its general goals of providing a generic run-time environment with support for multiple runtime languages.
Research is being specifically conducted into real-time scheduling, as well as automatic memory management techniques to minimize the overall memory footprint and utilizing specific architectural features for better execution performance.
2.3. MicroJIT for OMR
The goal is to design and implement generic ahead-of-time (AOT) code-compilation support for OMR and then extend AOT to support a scripting language. Current implementations of AOT have been analyzed in detail and research is being specifically conducted into deciding what should be stored in persistent memory to gain best advantage in terms of size and execution speed, and into a framework for storing AOT code for OMR.
2.3. MicroJIT for OMR
The goal is to improve the performance of OMR in resource constrained environments through enhanced just-in-time (JIT) compilation. Starting from the existing IBM MicroJIT implementation, specific research is being conducted into utilizing MicroJIT for languages other than Java and for applying MicroJIT in embedded OMR.
2.4: Detection and mitigation of load stalls on AArch64
The goals are to profile load stalls on AArch64 and to determine an effective mitigation strategy. Specifically, we are developing a profiling tool integrated with the OMR compiler component. We will then evaluate its effectiveness, improve upon it and integrate the resulting mitigation strategy into OMR.