With the increasing popularity of Serverless computing and Function as a Service—where typical workloads have a short lifetime—the research community is increasingly focusing on startup performance optimization. To reduce the startup time of managed language runtime systems, related work proposes strategies to move runtime environment initialization ahead-of-time. For instance, GraalVM Native Image allows one to create a binary file from a Java application that embeds a snapshot of the pre-initialized heap memory and can run without instantiating a Java Virtual Machine. However, the program startup needs to be further optimized, because the cloud runtime often starts the program while responding to the request. Thus, the program startup time impacts the service-level agreement.
In this paper, we improve the startup time of Native-Image binaries by changing their layout during compilation, reducing I/O traffic. We propose a profile-guided binary-reordering approach and a profiling methodology to obtain the execution-order profiles of methods and objects. Thanks to these profiles, we first reduce page faults related to the code section. Then, we propose three ordering strategies to reduce page faults related to accessing the objects in the heap snapshot. Since the object identities and the heap-snapshot contents are not persistent across Native-Image builds of the same program, we propose a method of matching objects from the profile against the objects in the profile-guided build. Experimental results show that our ordering strategies lead to an average page-fault reduction factor of $1.65\times$ when using a Solid-state Drive (SSD), and of $1.68\times$ when using Network File System (NFS). This reduction results in an average execution-time speedup of $1.59\times$ (SSD) and $1.58\times$ (NFS).
Wed 5 MarDisplayed time zone: Pacific Time (US & Canada) change
11:40 - 13:00 | |||
11:40 20mTalk | Honey Potion: an eBPF Backend for Elixir Main Conference Kael Soares Augusto UFMG, Vinícius Pacheco Cadence, Marcos A. M. Vieira Universidade Federal de Minas Gerais, Rodrigo G. Ribeiro Federal University of Ouro Preto, Fernando Magno Quintão Pereira Federal University of Minas Gerais | ||
12:00 20mTalk | GoFree: Reducing Garbage Collection via Compiler-inserted Freeing Main Conference Haoran Peng University of Science and Technology of China, Yu Zhang University of Science and Technology of China, Michael D. Ernst University of Washington, Jinbao Chen University of Science and Technology of China, Boyao Ding University of Science and Technology of China DOI | ||
12:20 20mTalk | Improving Native-Image Startup Performance Main Conference Matteo Basso Università della Svizzera italiana (USI), Aleksandar Prokopec Oracle Labs, Andrea Rosà USI Lugano, Walter Binder USI Lugano | ||
12:40 20mTalk | Speeding up the Local C++ Development Cycle with Header Substitution Main Conference Nader Al Awar The University of Texas at Austin, Zijian Yi The University of Texas at Austin, George Biros The University of Texas at Austin, Milos Gligoric The University of Texas at Austin |