DeepAI AI Chat
Log In Sign Up

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

by   Xiaoran Xu, et al.
HUAWEI Technologies Co., Ltd.
University of Rochester
Rice University

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


page 1

page 7

page 18


Compiler Auto-tuning through Multiple Phase Learning

Widely used compilers like GCC and LLVM usually have hundreds of optimiz...

Efficient Characterization of Hidden Processor Memory Hierarchies

A processor's memory hierarchy has a major impact on the performance of ...

Energy-Efficient Runtime Adaptable L1 STT-RAM Cache Design

Much research has shown that applications have variable runtime cache re...

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

Web application performance is heavily reliant on the hit rate of memory...

Layered Binary Templating: Efficient Detection of Compiler- and Linker-introduced Leakage

Cache template attacks demonstrated automated leakage of user input in s...

CheckSync: Using Runtime-Integrated Checkpoints to Achieve High Availability

CheckSync provides applications with high availability via runtime-integ...

Android Private Compute Core Architecture

Android's Private Compute Core (PCC) is a secure, isolated environment w...