Exploration of the Relationship Between Just-in-Time Compilation Policy and Number of Cores

Just-in-Time (JIT) compilation is a key technique for programs written in managed languages, such as Java and JavaScript. Traditionally, a conservative JIT compilation policy is used without impacting application threads too much on single-core machines. Nowadays, modern machines provide more and more processor cores, which are abundant computing resources. Modern virtual machines also have the ability to use an aggressive compilation policy, such as spawning multiple concurrent compiler threads, which is suitable to multicore situation. However, the suitable JIT compilation policy varies with the number of microprocessor cores. The goal of this work is to explore the relationship between the number of microprocessor cores on modern machines and the suitable JIT compilation policies that can enable existing as well as future VMs to realize better program performance.

[1]  Igor Böhm,et al.  Generalized just-in-time trace compilation using a parallel task farm in a dynamic binary translator , 2011, PLDI '11.

[2]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[3]  Lieven Eeckhout,et al.  Exploring multi-threaded Java application performance on multicore hardware , 2012, OOPSLA '12.

[4]  Seong-Won Lee,et al.  Enhanced hot spot detection heuristics for embedded java just-in-time compilers , 2008, LCTES '08.

[5]  Mahmut T. Kandemir,et al.  Reducing dynamic compilation overhead by overlapping compilation and execution , 2006, Asia and South Pacific Conference on Design Automation, 2006..

[6]  Chien-Min Wang,et al.  HQEMU: a multi-threaded and retargetable dynamic binary translator on multicores , 2012, CGO '12.

[7]  Xipeng Shen,et al.  Finding the limit: examining the potential and complexity of compilation scheduling for JIT-based runtime systems , 2014, ASPLOS.

[8]  Prasad A. Kulkarni,et al.  Exploring single and multilevel JIT compilation policy for modern machines 1 , 2013, TACO.

[9]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[10]  Jonathan L. Schilling The simplest heuristics may be the best in Java JIT compilers , 2003, SIGP.

[11]  L. Peter Deutsch,et al.  Efficient implementation of the smalltalk-80 system , 1984, POPL.

[12]  John Aycock,et al.  A brief history of just-in-time , 2003, CSUR.

[13]  Matthew Arnold,et al.  Dynamic compilation: the benefits of early investing , 2007, VEE '07.

[14]  Prasad A. Kulkarni,et al.  JIT compilation policy for modern machines , 2011, OOPSLA '11.

[15]  Ting Cao,et al.  The Yin and Yang of power and performance for asymmetric hardware and managed software , 2012, 2012 39th Annual International Symposium on Computer Architecture (ISCA).

[16]  James E. Smith,et al.  Virtual machines - versatile platforms for systems and processes , 2005 .

[17]  Vivek Sarkar,et al.  Reducing the overhead of dynamic compilation , 2001, Softw. Pract. Exp..

[18]  Prasad A. Kulkarni,et al.  Novel online profiling for virtual machines , 2010, VEE '10.

[19]  Cliff Click,et al.  The java hotspot TM server compiler , 2001 .