-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Investigate stability of PGO updates #52610
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Marking as codegen for now, though the issues may lie elsewhere. |
For
|
For
|
@jakobbotsch has developed some |
Given the relative stability of the PGO collection I'm going to close this for now. The perf fluctuations coming from PGO updates are proving tough to pin down, but the root cause doesn't appear to be managed PGO instability. |
I'm going to re-open this. We continue to see a steady rate of perf fluctuations from PGO. These have become more obvious during the .NET 6 endgame because we still see daily PGO updates in main and there's not much else going on. A few possible areas for deeper analysis:
As far as tolerating the inherent instability, @tannergooding has suggested we might blend PGO data collected on successive days as a way of stabilizing updates; this seems like it has promise. |
As far as I know this is not causing problems, though we do see perf swings in a number of tests from PGO updates. Going to move to future. |
We are seeing fairly frequent microbenchmark performance shifts with the managed PGO updates. We need to root cause this and figure out how to address them.
Possible causes:
.mibc
format.mibc
file.mibc
profile data into assemblies (see eg ...)For example, the last few fluctuations here are correlated with PGO updates:
See also
First step is perhaps to create a
.mibc
comparison tool (or mode in in the pgo tool) to try and see how much variation we're seeing from one update to the next. Given two.mibc
it would first match up methods and report how many methods have PGO data in one collection but not the other; then for cases where both methods have PGO, it could detect when the schemas have changed, and where the schemas agree, it could run a similarity analysis on the count and class profile data to see if what was measured seems to have changed in any significant way.category:cq
theme:profile-feedback
The text was updated successfully, but these errors were encountered: