ShareJIT: JIT Code Cache Sharing across Processes and its Practical Implementation
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 runtime performance by 9% on average, while decreasing memory consumption by 16% on average and JIT compilation time by 37% on average.
Wed 7 NovDisplayed time zone: Guadalajara, Mexico City, Monterrey change
15:30 - 17:00
|Format Abstraction for Sparse Tensor Algebra Compilers|
|ShareJIT: JIT Code Cache Sharing across Processes and its Practical Implementation|
|Reconciling High-level Optimizations and Low-level Code in LLVM|
Juneyoung Lee Seoul National University, Chung-Kil Hur Seoul National University, Ralf Jung MPI-SWS, Zhengyang Liu University of Utah, John Regehr University of Utah, Nuno P. Lopes Microsoft ResearchPre-print
|An Empirical Study of the Effect of Source-level Loop Transformations on Compiler Stability|
Zhangxiaowen Gong University of Illinois at Urbana-Champaign, Zhi Chen University of California, Irvine, Justin Szaday University of Illinois at Urbana-Champaign, David Wong Intel, Zehra Sura IBM Research, Neftali Watkinson , Saeed Maleki Microsoft Research, David Padua University of Illinois at Urbana-Champaign, Alexander Veidenbaum University of California, Irvine, Alexandru Nicolau University of California, Irvine, Josep Torrellas University of Illinois at Urbana-ChampaignMedia Attached