Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evaluate using Profile-Guided Optimization (PGO) and Post-Link Optimization (PLO) for SteamOS #1287

Closed
zamazan4ik opened this issue Dec 5, 2023 · 2 comments

Comments

@zamazan4ik
Copy link

This issue is not exactly about the problem - it's just an idea of how to improve SteamOS performance and UX and battery life for SteamDeck.

I can imagine multiple things where PGO can shine in SteamOS:

Maybe they are valuable for SteamOS applications. Here I collect as many PGO cases as I can find - you can check them and find more other applications.

@kisak-valve
Copy link
Member

Hello @zamazan4ik, this is a recurring topic among many open source projects. The general outcome is that you can make one very specific use case marginally better while harming almost all other use cases and sometimes creates some extremely poor performance results when the profile used to compile doesn't match reality.

When generalized to an entire OS install, this is a sink hole to burn developer time and isn't worth looking into. The time spent tuning profiles is better spent integrating newer package versions which have picked up optimizations as part of their upstream maintenance. If there's a specific and significant performance improvement to be found in a specific project, then contribute it upstream for everybody to benefit.

@kisak-valve kisak-valve closed this as not planned Won't fix, can't repro, duplicate, stale Dec 5, 2023
@zamazan4ik
Copy link
Author

marginally better

I have a lot of examples where the outcome is significant, not marginal. All the benchmarks you can check here (the same link was in the first message).

while harming almost all other use cases

It's not true if you are using several profiles from different workloads and use all of them simultaneously to create one PGO build (it could be done via merging several PGO profiles into one via dedicated tooling like llvm-profdata merge).

sometimes creates some extremely poor performance results when the profile used to compile doesn't match reality.

I do agree. However, it is usually simply mitigated by adding this profile to the PGO training set as well.

When generalized to an entire OS install, this is a sink hole to burn developer time and isn't worth looking into. The time spent tuning profiles is better spent integrating newer package versions which have picked up optimizations as part of their upstream maintenance. If there's a specific and significant performance improvement to be found in a specific project, then contribute it upstream for everybody to benefit.

Yeah, makes sense. Thanks a lot for the answer!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants