ShareJIT: JIT Code Cache Sharing across Processes and Its Practical Implementation

10/22/2018
by   Xiaoran Xu, et al.
0

Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code caches, along with the associated profiling data for the hot code, however, consume significant amounts of memory. Furthermore, they incur extra JIT compilation time for their creation. On Android, the current standard JIT compiler and its code caches are not shared among processes---that is, the runtime system maintains a private code cache, and its associated data, for each runtime process. However, applications running on the same platform tend to share multiple libraries in common. Sharing cached code across multiple applications and multiple processes can lead to a reduction in memory use. It can directly reduce compile time. It can also reduce the cumulative amount of time spent interpreting code. All three of these effects can improve actual runtime performance. In this paper, we describe ShareJIT, a global code cache for JITs that can share code across multiple applications and multiple processes. We implemented ShareJIT in the context of the Android Runtime (ART), a widely used, state-of-the-art system. To increase sharing, our implementation constrains the amount of context that the JIT compiler can use to optimize the code. This exposes a fundamental tradeoff: increased specialization to a single process' context decreases the extent to which the compiled code can be shared. In ShareJIT, we limit some optimization to increase shareability. To evaluate the ShareJIT, we tested 8 popular Android apps in a total of 30 experiments. ShareJIT improved overall performance by 9 consumption by 16

READ FULL TEXT

page 1

page 7

page 18

research
04/27/2023

Compiler Auto-tuning through Multiple Phase Learning

Widely used compilers like GCC and LLVM usually have hundreds of optimiz...
research
06/12/2018

Efficient Characterization of Hidden Processor Memory Hierarchies

A processor's memory hierarchy has a major impact on the performance of ...
research
04/19/2019

Energy-Efficient Runtime Adaptable L1 STT-RAM Cache Design

Much research has shown that applications have variable runtime cache re...
research
10/26/2016

Memshare: a Dynamic Multi-tenant Memory Key-value Cache

Web application performance is heavily reliant on the hit rate of memory...
research
09/09/2023

A Further Study of Linux Kernel Hugepages on A64FX with FLASH, an Astrophysical Simulation Code

We present an expanded study of the performance of FLASH when using Linu...
research
08/04/2022

CheckSync: Using Runtime-Integrated Checkpoints to Achieve High Availability

CheckSync provides applications with high availability via runtime-integ...
research
05/16/2021

Intra-process Caching and Reuse of Threads

Creating and destroying threads on modern Linux systems incurs high late...

Please sign up or login with your details

Forgot password? Click here to reset