JACO: JAva Code Layout Optimizer Enabling Continuous Optimization without Pausing Application Services
Authors:
- 31 October 2023
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 295-306
Abstract
Many Java applications in data centers suffer from severe processor pipeline frontend bottlenecks, which can be mitigated by profile-guided code layout optimizations (PGCLO). To maximize optimization opportunities, state-of-the-art PGCLO solutions adopt continuous optimization to ensure that the code layout consistently matches ever-changing application control flow characteristics. However, existing continuous optimizations inevitably pause the application to execute the new code completely, which leads to high response latency and significantly deteriorates user experience.In this paper, we propose JACO, a novel profile-guided Java code layout optimizer, enabling continuous optimization without pausing application services. The key idea of JACO is to enable the execution of both the old and new code simultaneously rather than completely switching to the new code. In particular, JACO is composed of three components: (1) A lightweight profiler captures the control flow information of the application and then generates an optimized function order. (2) A control flow switcher generates new code based on optimized function order and switches the application to execute the new code without pausing the application services. (3) A selective code reclaimer only frees the memory occupied by the inactive old code. We evaluated JACO on both open-source applications and real-world applications from a world-leading company. JACO achieved up to a 16.36% performance improvement for real-world applications. The state-of-the-art approach introduces up to 37.93x latency overhead that will interrupt application services, while JACO only introduces a negligible 7% latency overhead.Keywords
This publication has 50 references indexed in Scilit:
- Profiling a warehouse-scale computer2015
- Architectural Support for Dynamic Linking2015
- Design of the Java HotSpot™ client compiler for Java 6ACM Transactions on Architecture and Code Optimization, 2008
- Buffering databse operations for enhanced instruction cache performance2004
- Fetch directed instruction prefetching2003
- Path-based next trace prediction2002
- Architectural and compiler support for effective instruction prefetchingACM Transactions on Computer Systems, 2001
- A scalable front-end architecture for fast instruction deliveryACM SIGARCH Computer Architecture News, 1999
- Debugging optimized code with dynamic deoptimization1992
- Profile guided code positioning1990