About this Learning Path

Who is this for?

This is an introductory topic for developers who have compiled an AArch64 Linux application and want to evaluate whether LLVM BOLT can improve its runtime performance.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Identify whether a program is a good candidate for code layout optimization
  • Use LLVM BOLT to perform profile-guided post-link optimization of an AArch64 binary with poor spatial locality
  • Collect profile data using multiple techniques, including BRBE, instrumentation, SPE, and PMU event sampling
  • Evaluate the impact of BOLT optimizations using performance metrics and profiling data

Prerequisites

Before starting, you will need the following:

  • An AArch64 system running Linux with perf installed
  • Linux kernel version 6.17 or later to enable Branch Record Buffer Extension ( BRBE profiling )
  • Linux kernel version 6.14 or later for Arm Statistical Profiling Extension ( SPE profiling )
  • GCC version 13.3 or later to compile the example program ( GCC )
  • LLVM BOLT version 21.1.8 or later (download zip )
  • A system with with sufficient hardware performance counters to use the TopDown methodology. This typically requires running on bare metal rather than a virtualized environment.
Next