Facebook Is Looking To Upstream Their BOLT Binary Performance Optimizer Into LLVM
Facebook's BOLT is a multi-year project focused on speeding up the performance of binaries. This open-source project initially focused on being able to better optimize Linux x86_64/ARM64 ELF binaries as a post-link optimizer. BOLT has been seeing much success with even Google using it now for better performance and now there is work to upstream it as part of the LLVM project.
Facebook engineers are hoping to see BOLT added to LLVM as a binary optimization framework. Google has reported with their own workloads that BOLT can normally provide 2~6% uplift on top of the abilities of compiler optimizations. Other organizations and academia also have been using BOLT in varying capacities.
BOLT can also be used for binary advanced disassembly, low-level program instrumentation, and static analysis on binaries. BOLT makes use of several LLVM libraries but has been developed out-of-tree. In addition to hoping to upstream BOLT as an LLVM sub-project, the developers involved are also working on automatic profile collection and optimizations, Mach0 support to complement the current ELF binary focus, LLD linker integration, and even the ability for being able to optimize Linux kernel images with BOLT.
More details on the proposal for pushing BOLT into LLVM via this mailing list post.
Those wanting to explore BOLT can find the code hosted under Facebook Incubator on GitHub. It's been on my TODO list for a while running some BOLT benchmarks and will hopefully find the time to do so soon.
Facebook engineers are hoping to see BOLT added to LLVM as a binary optimization framework. Google has reported with their own workloads that BOLT can normally provide 2~6% uplift on top of the abilities of compiler optimizations. Other organizations and academia also have been using BOLT in varying capacities.
BOLT can also be used for binary advanced disassembly, low-level program instrumentation, and static analysis on binaries. BOLT makes use of several LLVM libraries but has been developed out-of-tree. In addition to hoping to upstream BOLT as an LLVM sub-project, the developers involved are also working on automatic profile collection and optimizations, Mach0 support to complement the current ELF binary focus, LLD linker integration, and even the ability for being able to optimize Linux kernel images with BOLT.
More details on the proposal for pushing BOLT into LLVM via this mailing list post.
Those wanting to explore BOLT can find the code hosted under Facebook Incubator on GitHub. It's been on my TODO list for a while running some BOLT benchmarks and will hopefully find the time to do so soon.
3 Comments