Assigned
Status Update
Comments
ba...@google.com <ba...@google.com>
ma...@google.com <ma...@google.com> #2
I have forwarded this request to the engineering team. We will update this issue with any progress updates and a resolution.
Description
Hi!
I evaluate multiple approaches to applying Profile-Guided Optimization (PGO) to the IT ecosystem (if you are interested you can check the results athttps://github.com/zamazan4ik/awesome-pgo/ . According to my tests, PGO helps with achieving better performance for many existing applications.
There are two major kinds of PGO: Instrumentation and Sampling (about both of them you can read the Clang compiler documentation:https://clang.llvm.org/docs/UsersManual.html#differences-between-sampling-and-instrumentation . Despite Instrumentation-based PGO is much more well-known in the community (from my experience), it has major drawbacks. One of the biggest drawbacks is the performance overhead during the profiling phase.
To resolve this issue, Google invented Sampling PGO (also sometimes called AutoFDO:https://github.com/google/autofdo . This approach uses https://research.google/pubs/pub45290/ . I think you know much more about that than me 🙂
perf
-based profiling to collect the PGO profiles directly from the production environment, and then use them during the optimization phase. More details about the whole ecosystem around AutoFDO in Google can be found in their paper:My idea is to think about building the same system as Google has internally but based on Cloud Profiler and available for GCP customers. It could be an interesting opportunity for Google to become a unique solution in the continuous optimization area.
I created issues for the same feature in other projects: Grafana Pyroscope (https://github.com/grafana/pyroscope/discussions/2783 ) and Elastic Universal Profiling (https://github.com/elastic/elasticsearch/issues/105802 ).
It would be great to hear thoughts about the idea from the Cloud Profiler devs.
Thank you.