SAN FRANCISCO, February 29, 2024 – Google is pushing for a significant upgrade to the open-source LLVM compiler infrastructure, aiming to integrate its performance-boosting “Propeller” tool directly into the core codebase. This move could streamline optimization for large software projects,potentially making it easier for developers to squeeze more performance out of their applications.
optimizing Code at Scale wiht Propeller
Google’s Propeller is a profile-guided, reflinking optimizer designed to improve the performance of large codebases, and its potential inclusion in LLVM could simplify the optimization process for many developers.
- Propeller is a post-link optimization (PLO) framework developed by Google.
- It uses a relinking approach,offering a scalable alternative to existing binary-rewriting tools.
- Integrating Propeller into LLVM would create a dependency-free, out-of-the-box solution for developers.
- Google has already seen performance gains of 5~10% on linux kernel builds using Propeller.
For years,Google engineers have been quietly refining Propeller,a profile-guided,reflinking optimizer,to accelerate the performance of ample binaries and applications. The tool, built on top of LLVM, allows for whole-program optimizations – a deep dive into the code to identify and eliminate bottlenecks. Now, Jin Huang of Google’s compiler team has formally proposed upstreaming Propeller into the LLVM source tree, as detailed in a proposal to the LLVM Discourse.
What exactly dose this mean for developers? Currently, utilizing propeller requires a somewhat cumbersome workflow involving an external repository (google/llvm-propeller). Huang’s proposal outlines how integrating the tool directly into LLVM – specifically within the llvm/tools directory – would drastically simplify the user experience. It would be distributed alongside standard tools like llvm-profgen in Profile Guided Optimizations (PGO) infrastructure, creating a more seamless and accessible process.
A Scalable Alternative to Existing Tools
Propeller isn’t just about convenience; it also offers a distinct approach to optimization.The proposal highlights that Propeller leverages a relinking-based approach, making it notably well-suited for distributed and incremental build environments. This contrasts with binary-rewriting frameworks like BOLT, offering a scalable option for large projects. The Clang (-fbasic-block-sections) and LLD (-lto-basic-block-sections) components are already part of LLVM, and Propeller would complete the picture.
The hope is that this integration will come to fruition by 2026, providing developers with a more streamlined and powerful way to optimize their code. The move signals a continued commitment to open-source collaboration and a desire to push the boundaries
