Skip to content

BOLT: A Practical Binary Optimizer for Data Centers and Beyond #45

Open
@kavon

Description

@kavon

Link: https://arxiv.org/abs/1807.06735

Abstract:

Performance optimization for large-scale applications has recently become more important as computation continues to move towards data centers. Data-center applications are generally very large and complex, which makes code layout an important optimization to improve their performance. This has motivated recent investigation of practical techniques to improve code layout at both compile time and link time. Although post-link optimizers had some success in the past, no recent work has explored their benefits in the context of modern data-center applications.

In this paper, we present BOLT, a post-link optimizer built on top of the LLVM framework. Utilizing sample-based profiling, BOLT boosts the performance of real-world x86 64-bit ELF applications even for highly optimized binaries built with both feedback-driven optimizations (FDO) and link-time optimizations (LTO). We demonstrate that post-link performance improvements are complementary to conventional compiler optimizations, even when the latter are done at a whole-program level and in the presence of profile information. BOLT has been deployed inside Facebook for multiple data-center workloads. For data-center applications, BOLT achieves up to 8.0% performance speedups on top of profile-guided function reordering and LTO. We have also applied BOLT to GCC and Clang binaries, and our evaluation shows that BOLT speeds up these binaries by up to 15.3% on top of FDO and LTO, and up to 35.5% if the binaries are built without FDO and LTO.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions