In the framework of this project, an automatic profile information collection system using BOLT technology was introduced. When using profile optimizations, Clang compiler performance increases up to 30%, after the profile has been collected, it should be passed to the compiler for re-optimization, but in many cases recompilation is't possible. BOLT is the technology that solves this problem. BOLT allows for significant acceleration without recompiling.
Perfd is implemented as a Python script. It is registered in the system as a service using systemd. Profile collection uses Linux perf system utility.The database is sqlite.
BOLT
- is a post-link optimizer developed to speed up large applications. It achieves the improvements by optimizing application's code layout based on execution profile gathered by sampling profiler, such as Linux perf tool.
SQL30
- is a zero weight ORM(Object–relational mapping) for sqlite3 in Python.ORM(Object–relational mapping)
- in computer science is a programming technique for converting data between type systems using object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.
Systemd
- это менеджер демонов в Linux. Этот демон позволяет управлять запуском сервисов и обеспечивает такие функции, как мониторинг и логирование.
> ` git clone https://github.com/facebookincubator/BOLT llvm-bolt`
>`mkdir build`
> `cd build`
> `cmake -G Ninja ../llvm-bolt/llvm -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;lld;bolt"`
> `ninja`
pip install sql30
> `apt-get update -y`
> `apt-get install -y systemd`
Project Linux-perfd is distributed under the MIT license.