Abstract
Dynamic or Just-in-Time (JIT) compilation is crucial to achieve acceptable performance for applications (written in managed languages, such as Java and C#) distributed as intermediate language binary codes for a virtual machine (VM) architecture. Since it occurs at runtime, JIT compilation needs to carefully tune its compilation policy to make effective decisions regarding 'if' and 'when' to compile different program regions to achieve the best overall program performance. Past research has extensively tuned JIT compilation policies, but mainly for VMs with a single compiler thread and for execution on single-processor machines.
This work is driven by the need to explore the most effective JIT compilation strategies in their modern operational environment, where (a) processors have evolved from single to multi/many cores, and (b) VMs provide support for multiple concurrent compiler threads. Our results confirm that changing 'if' and 'when' methods are compiled have significant performance impacts. We construct several novel configurations in the HotSpot JVM to facilitate this study. The new configurations are necessitated by modern Java benchmarks that impede traditional static whole-program discovery, analysis and annotation, and are required for simulating future many-core hardware that is not yet widely available. We study the effects on performance of increasing compiler aggressiveness for VMs with multiple compiler threads running on existing single/multi-core and future many-core machines. Our results indicate that although more aggressive JIT compilation policies show no benefits on single-core machines, these can often improve program performance for multi/many-core machines. However, accurately prioritizing JIT method compilations is crucial to realize such benefits.
- International technology roadmap for semiconductors. accessed from http://www.itrs.net/Links/2009ITRS/Home2009.htm, 2008-09.Google Scholar
- Arnold, Fink, Grove, Hind, and Sweeney}jikes00M. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. Adaptive optimization in the jalapeno jvm. In Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 47--65, 2000. Google Scholar
Digital Library
- Arnold, Fink, Grove, Hind, and Sweeney}jikes00controllerM. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. Adaptive optimization in the Jalapeño JVM: The controller's analytical model. In Proceedings of the 3rd ACM Workshop on Feedback Directed and Dynamic Optimization (FDDO '00), December 2000. Google Scholar
Digital Library
- M. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. A survey of adaptive optimization in virtual machines. Proceedings of the IEEE, 92 (2): 449--466, February 2005.Google Scholar
Cross Ref
- S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, OOPSLA '06, pages 169--190, 2006. Google Scholar
Digital Library
- E. Bodden, A. Sewe, J. Sinschek, H. Oueslati, and M. Mezini. Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders. In ICSE '11: International Conference on Software Engineering, May 2011. Google Scholar
Digital Library
- Böhm, Edler von Koch, Kyle, Franke, and Topham}Bohm11pldiI. Böhm, T. J. Edler von Koch, S. C. Kyle, B. Franke, and N. Topham. Generalized just-in-time trace compilation using a parallel task farm in a dynamic binary translator. In Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation, PLDI '11, pages 74--85, 2011. Google Scholar
Digital Library
- D. Bruening and E. Duesterwald. Exploring optimal compilation unit shapes for an embedded just-in-time compiler. In 3rd ACM Workshop on Feedback-Directed and Dynamic Optimization, pages 13--20, 2000.Google Scholar
- P. P. Chang, S. A. Mahlke, and W. mei W. Hwu. Using profile information to assist classic code optimizations. Software Practice and Experience, 21: 1301--1321, 1991. Google Scholar
Digital Library
- L. P. Deutsch and A. M. Schiffman. Efficient implementation of the smalltalk-80 system. In POPL '84: Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, pages 297--302, New York, NY, USA, 1984. ACM. ISBN 0--89791--125--3. Google Scholar
Digital Library
- M. X. Goemans. Advanced algorithms. Technical Report MIT/LCS/RSS-27, 1994. Google Scholar
Digital Library
- J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java(TM) Language Specification (3rd Edition). Prentice Hall, third edition, June 14 2005. Google Scholar
Digital Library
- S. L. Graham, P. B. Kessler, and M. K. Mckusick. Gprof: A call graph execution profiler. SIGPLAN Notices, 17 (6): 120--126, 1982. Google Scholar
Digital Library
- N. Grcevski, A. Kielstra, K. Stoodley, M. Stoodley, and V. Sundaresan. Java just-in-time compiler and virtual machine improvements for server and middleware applications. In Proceedings of the conference on Virtual Machine Research And Technology Symposium, pages 12--12, 2004. Google Scholar
Digital Library
- D. Gu and C. Verbrugge. Phase-based adaptive recompilation in a jvm. In Proceedings of the 6th IEEE/ACM symposium on Code generation and optimization, CGO '08, pages 24--34, 2008. Google Scholar
Digital Library
- M. Haneda, P. M. W. Knijnenburg, and H. A. G. Wijshoff. Generating new general compiler optimization settings. In ICS '05: Proceedings of the 19th Annual International Conference on Supercomputing, pages 161--168, 2005. ISBN 1--59593--167--8. Google Scholar
Digital Library
- G. J. Hansen. Adaptive systems for the dynamic run-time optimization of programs. PhD thesis, Carnegie-Mellon Univ., Pittsburgh, PA, 1974. Google Scholar
Digital Library
- T. Harris. Controlling run-time compilation. In IEEE Workshop on Programming Languages for Real-Time Industrial Applications, pages 75--84, Dec. 1998.Google Scholar
- U. Hölzle and D. Ungar. Reconciling responsiveness with performance in pure object-oriented languages. ACM Transactions on Programming Language Systems, 18 (4): 355--400, 1996. ISSN 0164-0925. Google Scholar
Digital Library
- R. M. Karp. On-line algorithms versus off-line algorithms: How much is it worth to know the future? In Proceedings of the IFIP World Computer Congress on Algorithms, Software, Architecture - Information Processing, Vol 1, pages 416--429, 1992. Google Scholar
Digital Library
- D. E. Knuth. An empirical study of fortran programs. Software: Practice and Experience, 1 (2): 105--133, 1971.Google Scholar
Cross Ref
- T. Kotzmann, C. Wimmer, H. Mössenböck, T. Rodriguez, K. Russell, and D. Cox. Design of the Java hotspot#8482; client compiler for Java 6. ACM Trans. Archit. Code Optim., 5 (1): 1--32, 2008. Google Scholar
Digital Library
- C. Krintz. Coupling on-line and off-line profile information to improve program performance. In CGO '03: Proceedings of the international symposium on Code generation and optimization, pages 69--78, Washington, DC, USA, 2003. Google Scholar
Digital Library
- C. Krintz and B. Calder. Using annotations to reduce dynamic optimization time. In Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation, pages 156--167, 2001. Google Scholar
Digital Library
- C. Krintz, D. Grove, V. Sarkar, and B. Calder. Reducing the overhead of dynamic compilation. Software: Practice and Experience, 31 (8): 717--738, December 2000.Google Scholar
Cross Ref
- P. Kulkarni, M. Arnold, and M. Hind. Dynamic compilation: the benefits of early investing. In VEE '07: Proceedings of the 3rd international conference on Virtual execution environments, pages 94--104, 2007. Google Scholar
Digital Library
- P. A. Kulkarni and J. Fuller. JIT compilation policy on single-core and multi-core machines. In the 15th Workshop on Interaction between Compilers and Computer Architectures (INTERACT), pages 54--62, February 2011. Google Scholar
Digital Library
- Microsoft. Microsoft C# Language Specifications. Microsoft Press, first edition, April 25 2001. Google Scholar
Digital Library
- M. A. Namjoshi and P. A. Kulkarni. Novel online profiling for virtual machines. In VEE '10: Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, pages 133--144, 2010. ISBN 978--1--60558--910--7. Google Scholar
Digital Library
- M. Paleczny, C. Vick, and C. Click. The Java hotspottm server compiler. In JVM'01: Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium, pages 1--12, Berkeley, CA, USA, 2001. USENIX Association. Google Scholar
Digital Library
- SPEC2008. Specjvm2008 benchmarks. http://www.spec.org/jvm2008/, 2008.Google Scholar
- SPEC98. Specjvm98 benchmarks. http://www.spec.org/jvm98/, 1998.Google Scholar
- V. Sundaresan, D. Maier, P. Ramarao, and M. Stoodley. Experiences with multi-threading and dynamic class loading in a Java just-in-time compiler. In Proceedings of the International Symposium on Code Generation and Optimization, CGO '06, pages 87--97, 2006. Google Scholar
Digital Library
- R. Vallée-Rai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan. Soot - a Java bytecode optimization framework. In CASCON '99: Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research, page 13, 1999. Google Scholar
Digital Library
- D. L. Whitfield and M. L. Soffa. An approach for exploring code improving transformations. ACM Transactions on Programming Languages and Systems, 19 (6): 1053--1084, 1997. Google Scholar
Digital Library
Index Terms
JIT compilation policy for modern machines
Recommendations
JIT compilation policy for modern machines
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsDynamic or Just-in-Time (JIT) compilation is crucial to achieve acceptable performance for applications (written in managed languages, such as Java and C#) distributed as intermediate language binary codes for a virtual machine (VM) architecture. Since ...
Exploring single and multilevel JIT compilation policy for modern machines 1
Dynamic or Just-in-Time (JIT) compilation is essential to achieve high-performance emulation for programs written in managed languages, such as Java and C#. It has been observed that a conservative JIT compilation policy is most effective to obtain good ...
JIT Compilation Policy on Single-Core and Multi-core Machines
INTERACT '11: Proceedings of the 2011 15th Workshop on Interaction between Compilers and Computer ArchitecturesDynamic or Just-in-Time (JIT) compilation is crucial to achieve acceptable performance for applications written in traditionally interpreted languages, such as Java and C#. Such languages enable the generation of portable applications that are written ...







Comments