Abstract
When optimizing large-scale applications, striking the balance between steady-state performance, start-up time, and code size has always been a grand challenge. While recent advances in trace compilation have significantly improved the steady-state performance of trace JITs for large-scale Java applications, the size control aspect of a trace compilation system remains largely overlooked. For instance, using the DaCapo 9.12 benchmarks, we observe that 40% of traces selected by a state-of-the-art trace selection algorithm are short-lived and, on average, each selected basic block is replicated 13 times in the trace cache.
This paper studies the size control problem for a class of commonly used trace selection algorithms and proposes six techniques to reduce the footprint of trace selection without incurring any performance loss. The crux of our approach is to target redundancies in trace selection in the form of either short-lived traces or unnecessary trace duplication.
Using one of the best performing selection algorithms as the baseline, we demonstrate that, on the DaCapo 9.12 benchmarks and DayTrader 2.0 on WebSphere Application Server 7.0, our techniques reduce the code size and compilation time by 69% and the start-up time by 43% while retaining the steady-state performance. On DayTrader 2.0, an example of large-scale application, our techniques also improve the steady-state performance by 10%.
- Bala, V., Duesterwald, E., and Banerjia, S. Dynamo: A Transparent Runtime Optimization System. In Proceedings of Conference on Programming Language Design and Implementation (PLDI) (June 2000). Google Scholar
Digital Library
- Bebenita, M., Brandner, F., Fahndrich, M., Logozzo, F., Schulte, W., Tillmann, N., and Venter, H. SPUR: a trace-based JIT compiler for CIL. In Proceedings of International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA) (2010). pp. 708--725. Google Scholar
Digital Library
- Blackburn, Garner, Hoffmann, Khang, McKinley, Bentzur, Diwan, Feinberg, Frampton, Guyer, and Hosking. The DaCapo benchmarks: java benchmarking development and analysis. In Proceedings of Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA) (Oct. 2006). Google Scholar
Digital Library
- Bolz, C., Cuni, A., Fijalkowski, M., Leuschel, M., Pedroni, S., and Rigo, A. Allocation removal by partial evaluation in a tracing JIT. In Proceedings of Workshop on Partial Evaluation and Program Manipulation (2011). Google Scholar
Digital Library
- Bolz, C., Cuni, A., Fijalkowski, M., and Rigo, A. Tracing the Meta-Level: PyPy's Tracing JIT Compiler. In Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems (2009). Google Scholar
Digital Library
- Bruening, D., and Amarasinghe, S. Maintaining Consistency and Bounding Capacity of Software Code Caches. In Proceedings of International Symposium on Code Generation and Optimization (CGO) (Mar. 2005). Google Scholar
Digital Library
- Bruening, D., Garnett, T., and Amarasinghe, S. An Infrastructure for Adaptive Dynamic Compilation. In Proceedings of International Symposium on Code Generation and Optimization (CGO) (Mar. 2003). Google Scholar
Digital Library
- Gal, A., Eich, B., Shaver, M., Anderson, D., Mandelin, D., Haghighat, M. R., Kaplan, B., Hoare, G., Zbarsky, B., Orendorff, J., Ruderman, J., Smith, E. W., Reitmaier, R., Bebenita, M., Chang, M., and Franz, M. Trace-based just-in-time type specialization for dynamic languages. In Proceedings of Conference on Programming Language Design and Implementation (PLDI) (2009), pp. 465--478. Google Scholar
Digital Library
- Gal, A., and Franz, M. Incremental dynamic code generation with trace trees. Tech. rep., University of California Irvine, November 2006.Google Scholar
- Gal, A., Probst, C., and Franz, M. HotPathVM: An Effective JIT Compiler for Resource-constrained Devices. In Proceedings of International Conference on Virtual Execution Environments (VEE) (June 2006). Google Scholar
Digital Library
- Grcevski, N., Kielstra, A., Stoodley, K., Stoodley, M., and Sundaresan, V. Java just-in-time compiler and virtual machine improvements for server and middleware applications. In Proceedings of International Conference on Virtual Execution Environments (VEE) (June 2004). Google Scholar
Digital Library
- Guo, S., and Palsberg, J. The essence of compiling with traces. In Proceedings of International Symposium on Principles on Programming Languages (POPL) (2011), pp. 563--574. Google Scholar
Digital Library
- Hayashizaki, H., Wu, P., Inoue, H., Serrano, M. J., and Nakatani, T. Improving the performance of trace-based systems by false look filtering. In Proceedings of International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS) (March 2011). Google Scholar
Digital Library
- Hiniker, D., Hazelwood, K., and Smith, M. D. Improving region selection in dynamic optimization systems. In Proceedings of 38th International Symposium on Microarchitecture (MICRO) (Dec. 2005). Google Scholar
Digital Library
- IBM Corporation. WebSphere Application Server. http://www-01.ibm.com/software/webservers/appserv/was/.Google Scholar
- Inoue, H., Hayashizaki, H., Wu, P., and Nakatani, T. A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler. In Proceedings of International Symposium on Code Generation and Optimization (CGO) (April 2011). Google Scholar
Digital Library
- LuaJIT design notes in lua-l mailing list. http://lua-users.org/lists/lua-l/2008-02/msg00051.html.Google Scholar
- Merrill, D., and Hazelwood, K. Trace fragment selection within method-based jvms. In Proceedings of International Conference on Virtual Execution Environments (VEE) (June 2008). Google Scholar
Digital Library
- The Apache Software Foundation. DayTrader. http://cwiki.apache.org/GMOxDOC20/daytrader.html.Google Scholar
- Whaley, J. Partial Method Compilation using Dynamic Profile Information. In Proceeding of Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA) (Oct. 2001), pp. 166--179. Google Scholar
Digital Library
- Zaleski, M., Demke-Brown, A., and Stoodley, K. YETI: a graduallY Extensible Trace Interpreter. In Proceedings of International Conference on Virtual Execution Environments (VEE) (2007), pp. 83--93. Google Scholar
Digital Library
- Zhao, C., Wu, Y., Steffan, J., and Amza, C. Lengthening Traces to Improve Opportunities for Dynamic optimization. In 12th Workshop on Interaction between Compilers and Computer Architectures (Feb 2008).Google Scholar
Index Terms
Reducing trace selection footprint for large-scale Java applications without performance loss
Recommendations
Reducing trace selection footprint for large-scale Java applications without performance loss
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsWhen optimizing large-scale applications, striking the balance between steady-state performance, start-up time, and code size has always been a grand challenge. While recent advances in trace compilation have significantly improved the steady-state ...
Trace transitioning and exception handling in a trace-based JIT compiler for java
Trace-based Just-In-Time (JIT) compilation generates machine code for frequently executed paths (so-called traces) instead of whole methods. While this has several advantages, it complicates invocation of compiled traces as well as exception handling, ...
Context-sensitive trace inlining for Java
Method inlining is one of the most important optimizations in method-based just-in-time (JIT) compilers. It widens the compilation scope and therefore allows optimizing multiple methods as a whole, which increases the performance. However, if method ...







Comments