|
Abstract:
|
Compilers use program profiles to perform profile-guided optimizations and pro-
duce efficient programs. Although dynamic profilers generate high-quality profiles, they have
significant drawbacks. They complicate the application build pipeline by requiring two compi-
lation steps and an additional profile collection run. Dynamic profilers also consume substantial
time and memory and place a heavy burden on developers to create suitable workloads that
accurately reflect typical application usage, cover important code paths, and generate well-
distributed profiles.
In response to the shortcomings of dynamic profilers, modern static profilers employ ma-
chine learning (ML) techniques to predict program profiles. However, state-of-the-art ML-based
static profilers often rely on handcrafted features that are platform-specific and difficult to adapt
across different architectures and programming languages. They also tend to use computation-
ally intensive deep neural networks, which increase application compilation time. Moreover,
ML-based static profilers can degrade the performance of optimized programs due to inaccurate
profile predictions.
This dissertation presents GraalSP , an ML-based static profiler that is portable, polyglot,
efficient, and robust. GraalSP achieves portability by defining features on a high-level, graph-
based intermediate representation and by partially automating the feature extraction process.
This design makes GraalSP polyglot, allowing it to predict profiles for programs written in any
language that compiles to Java bytecode, such as Java, Scala, or Kotlin. GraalSP is efficient
due to its use of a lightweight XGBoost model based on decision trees, and robust because it
relies on carefully designed heuristics that correct machine learning predictions and ensure high
performance in programs optimized using the predicted profiles.
We integrate GraalSP into the Enterprise GraalVM Native Image compiler and evaluate it
on 28 benchmarks from the Renaissance, DaCapo, and DaCapo Scala benchmark suites. These
suites represent a modern and diverse collection of benchmarks, featuring numerous real-world
workloads across a variety of programming paradigms. Our comprehensive evaluation shows
that GraalSP achieves a geometric mean speedup of 7.46% in execution time compared to the
default compiler configuration, which models program profiles using a uniform distribution.
This dissertation also presents a detailed qualitative and quantitative analysis to position and
compare the proposed solution against state-of-the-art static profilers. Additionally, to enhance
and expand the evaluation and support developers in analyzing GraalSP ’s predictions, this
dissertation introduces the GraalSP-PLog tool. This tool allows developers to run the GraalSP
static profiler on any program and generate detailed prediction reports, making it easier to
inspect individual predictions and identify model mispredictions.
Since GraalSP provides substantial performance gains, has minimal impact on binary size
and compile time, and includes a modern, fully automated model retraining pipeline, it is well-
suited for commercial deployment. As a result, GraalSP has been the default static profiler
for the Enterprise GraalVM Native Image compiler since June 2023, consistently improving
performance with every build. |