Abstract
Just-in-time (JIT) compilation during program execution and ahead-of-time (AOT) compilation during software installation are alternate techniques used by managed language virtual machines (VM) to generate optimized native code while simultaneously achieving binary code portability and high execution performance. Profile data collected by JIT compilers at run-time can enable profile-guided optimizations (PGO) to customize the generated native code to different program inputs. AOT compilation removes the speed and energy overhead of online profile collection and dynamic compilation, but may not be able to achieve the quality and performance of customized native code. The goal of this work is to investigate and quantify the implications of the AOT compilation model on the quality of the generated native code for current VMs.
First, we quantify the quality of native code generated by the two compilation models for a state-of-the-art (HotSpot) Java VM. Second, we determine how the amount of profile data collected affects the quality of generated code. Third, we develop a mechanism to determine the accuracy or similarity for different profile data for a given program run, and investigate how the accuracy of profile data affects its ability to effectively guide PGOs. Finally, we categorize the profile data types in our VM and explore the contribution of each such category to performance.
- Dacapo batik benchmark fails. https://github.com/RedlineResearch/OLDOpenJDK8/issues/1.Google Scholar
- Dacapo eclipse benchmark fails. https://github.com/RedlineResearch/OLD-OpenJDK8/issues/2.Google Scholar
- M. Arnold and D. Grove. Collecting and exploiting high-accuracy call graph profiles in virtual machines. In Proceedings of the Symposium on Code Generation and Optimization, CGO ’05, pages 51–62, 2005. Google Scholar
Digital Library
- M. Arnold and D. Grove. Collecting and exploiting high-accuracy call graph profiles in virtual machines. In Proceedings of the Symposium on Code Generation and Optimization, pages 51–62, 2005. 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
- M. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. Adaptive optimization in the Jalapeno JVM. SIGPLAN Notices, 46(4):65–83, May 2011. ISSN 0362-1340. Google Scholar
Digital Library
- S. Blackburn, D. Frampton, R. Garner, and J. Zigman. dacapo-9.12bach. http://dacapobench.org/RELEASE NOTES.txt, 12 2009.Google Scholar
- 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´c, 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. ACM, 2006. Google Scholar
Digital Library
- W. J. Bowman, S. Miller, V. St-Amour, and R. K. Dybvig. Profileguided meta-programming. In Proceedings of the Conference on Programming Language Design and Implementation, pages 403–412, 2015. Google Scholar
Digital Library
- 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
- M. Cierniak, G.-Y. Lueh, and J. M. Stichnoth. Practicing judo: Java under dynamic optimizations. In Proceedings of the Conference on Programming Language Design and Implementation, pages 13–26, 2000. Google Scholar
Digital Library
- E. Duesterwald and V. Bala. Software profiling for hot path prediction: Less is more. SIGPLAN Notices, 35(11):202–211, Nov. 2000. Google Scholar
Digital Library
- A. Georges, D. Buytaert, and L. Eeckhout. Statistically rigorous Java performance evaluation. In Proceedings of the conference on Objectoriented programming systems and applications, pages 57–76, 2007. 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
- U. Hölzle and D. Ungar. Reconciling responsiveness with performance in pure object-oriented languages. ACM Trans. Program. Lang. Syst., 18(4):355–400, 1996. ISSN 0164-0925. Google Scholar
Digital Library
- A. Homescu, S. Neisius, P. Larsen, S. Brunthaler, and M. Franz. Profile-guided automated software diversity. In Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), CGO ’13, pages 1–11, 2013. Google Scholar
Digital Library
- S. Hong, J.-C. Kim, J. W. Shin, S.-M. Moon, H.-S. Oh, J. Lee, and H.-K. Choi. Java client ahead-of-time compiler for embedded systems. In Proceedings of the Conference on Languages, Compilers, and Tools for Embedded Systems, LCTES ’07, pages 63–72, 2007. Google Scholar
Digital Library
- X. Huang, S. M. Blackburn, K. S. McKinley, J. E. B. Moss, Z. Wang, and P. Cheng. The garbage collection advantage: Improving program locality. In Proceedings of the Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA ’04, pages 69–80, 2004. Google Scholar
Digital Library
- W.-M. W. Hwu, S. A. Mahlke, W. Y. Chen, P. P. Chang, N. J. Warter, R. A. Bringmann, R. G. Ouellette, R. E. Hank, T. Kiyohara, G. E. Haab, J. G. Holm, and D. M. Lavery. The superblock: An effective technique for vliw and superscalar compilation. J. Supercomput., 7 (1-2):229–248, 1993. ISSN 0920-8542. Google Scholar
Digital Library
- M. R. Jantz, F. J. Robinson, P. A. Kulkarni, and K. A. Doshi. Crosslayer memory management for managed language applications. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 488–504, 2015. Google Scholar
Digital Library
- D.-H. Jung, S.-M. Moon, and H.-S. Oh. Hybrid compilation and optimization for java-based digital tv platforms. ACM Trans. Embed. Comput. Syst., 13(2s):62:1–62:27, Jan. 2014. 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. A. Kulkarni. JIT Compilation policy for modern machines. In Proceedings of the Conference on Object Oriented Programming Systems Languages and Applications, pages 773–788, 2011. Google Scholar
Digital Library
- M. Mock, C. Chambers, and S. J. Eggers. Calpa: A tool for automating selective dynamic compilation. In Proceedings of the Symposium on Microarchitecture, pages 291–302, 2000. Google Scholar
Digital Library
- T. Moseley, A. Shye, V. J. Reddi, D. Grunwald, and R. Peri. Shadow profiling: Hiding instrumentation costs with parallelism. In Proceedings of the Symposium on Code Generation and Optimization, CGO ’07, pages 198–208, 2007. Google Scholar
Digital Library
- T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney. Evaluating the accuracy of java profilers. In Proceedings of the Conference on Programming Language Design and Implementation, PLDI ’10, pages 187–197, 2010. Google Scholar
Digital Library
- H.-S. Oh, J. H. Yeo, and S.-M. Moon. Bytecode-to-c ahead-of-time compilation for android dalvik virtual machine. In Proceedings of the Design, Automation & Test in Europe Conference & Exhibition, pages 1048–1053, 2015. Google Scholar
Digital Library
- M. Paleczny, C. Vick, and C. Click. The Java HotSpot™server compiler. In Proceedings of the Symposium on Java Virtual Machine Research and Technology Symposium, pages 1–12, 2001. Google Scholar
Digital Library
- K. Pettis and R. C. Hansen. Profile guided code positioning. In Proceedings of the ACM SIGPLAN 1990 Conference on Programming Language Design and Implementation, PLDI ’90, pages 16–27, 1990. Google Scholar
Digital Library
- F. J. Robinson, M. R. Jantz, and P. A. Kulkarni. Code cache management in managed language vms to reduce memory consumption for embedded systems. In Proceedings of the Conference on Languages, Compilers, Tools, and Theory for Embedded Systems, pages 11–20, 2016. Google Scholar
Digital Library
- S. Rubin, R. Bod´ık, and T. Chilimbi. An efficient profile-analysis framework for data-layout optimizations. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’02, pages 140–153. ACM, 2002. Google Scholar
Digital Library
- M. Serrano, R. Bordawekar, S. Midkiff, and M. Gupta. Quicksilver: A quasi-static compiler for java. In Proceedings of the Conference on Object-oriented Programming, Systems, Languages, and Applications, pages 66–82, 2000. Google Scholar
Digital Library
- SPEC2008. Specjvm2008 benchmarks. http://www.spec.org/jvm2008/, 2008.Google Scholar
- T. Suganuma, T. Yasue, M. Kawahito, H. Komatsu, and T. Nakatani. Design and evaluation of dynamic optimizations for a java just-intime compiler. ACM Transactions on Programming Languages and Systems, 27(4):732–785, July 2005. Google Scholar
Digital Library
- C.-S. Wang, G. Perez, Y.-C. Chung, W.-C. Hsu, W.-K. Shih, and H.-R. Hsu. A method-based ahead-of-time compiler for android applications. In Proceedings of the Conference on Compilers, Architectures and Synthesis for Embedded Systems, pages 15–24, 2011. Google Scholar
Digital Library
- Y. Wu and J. R. Larus. Static branch frequency and program profile analysis. In Proceedings of the Symposium on Microarchitecture, pages 1–11, 1994. Google Scholar
Digital Library
Index Terms
AOT vs. JIT: impact of profile data on code quality
Recommendations
HHVM JIT: a profile-guided, region-based compiler for PHP and Hack
PLDI 2018: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and ImplementationDynamic languages such as PHP, JavaScript, Python, and Ruby have been gaining popularity over the last two decades. A very popular domain for these languages is web development, including server-side development of large-scale websites. As a result, ...
Exploring Impact of Profile Data on Code Quality in the HotSpot JVM
Special Issue on LCETES, Part 2, Learning, Distributed, and Optimizing CompilersManaged language virtual machines (VM) rely on dynamic or just-in-time (JIT) compilation to generate optimized native code at run-time to deliver high execution performance. Many VMs and JIT compilers collect profile data at run-time to enable profile-...
AOT vs. JIT: impact of profile data on code quality
LCTES 2017: Proceedings of the 18th ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded SystemsJust-in-time (JIT) compilation during program execution and ahead-of-time (AOT) compilation during software installation are alternate techniques used by managed language virtual machines (VM) to generate optimized native code while simultaneously ...






Comments