Using Profile-Guided Optimization (PGO) and Post-Link Optimization (PLO) for Sailfish

Hi!

I am collecting a lot of resources about Profile-Guided Optimization (PGO) effects on different software (compilers, databases, browsers, log solution, operating systems, etc.) - all the results are available at GitHub - zamazan4ik/awesome-pgo: Various materials about Profile Guided Optimization and other similar stuff like AutoFDO, Bolt, etc. .

I have several ideas of how PGO can be interesting to Sailfish OS:

  1. Optimize Sailfish OS software with PGO. In this case, Sailfish users can get better performance and responsiveness for their applications. Battery life also can be improved. PGO can be applied for different parts of Sailfish: kernel, user application, some system daemons, etc.
  2. Optimize Sailfish’s CI system with PGO. E.g. GCC and Clang get up to +20% compilation speed with PGO. This can be valuable for the project since it can improve the developers’ experience (faster build times) and reduce costs for the CI system.

The same ideas apply to Post-Link Optimization (PLO) too like LLVM BOLT (https://github.com/llvm/llvm-project/blob/main/bolt/README.md) but I recommend starting with PGO and only after that trying to play with PLO.

I would be happy to answer all your questions about PGO and PLO.

Thank you.

P.S. We already discussed this topic a bit on FOSDEM 2024 - that’s why I created the issue here :slight_smile:

4 Likes