dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
14.56k stars 4.54k forks source link

Managed PGO auditing #50432

Open AndyAyersMS opened 3 years ago

AndyAyersMS commented 3 years ago

Now that we have static managed PGO data flowing around, we need a way to track and audit the data:

cc @davidwrighton @DrewScoggins

dotnet-issue-labeler[bot] commented 3 years ago

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.

davidwrighton commented 3 years ago

@AndyAyersMS updates the the managed pgo data are handled by dependency flow, so they are already visible as commits. Updates are visible as changes to eng/Versions.props and in particular when optimizationwindows_ntx64MIBCRuntimeVersion or the other related variables change. However, the rest of your points are quite interesting.

AndyAyersMS commented 3 years ago

@davidwrighton thanks. So I take it we have not had an update since the initial checkin, and that data was gathered on 3/17?

https://github.com/dotnet/runtime/blame/082af357d39f9df590fb4b123bcb6c21b0dd4369/eng/Versions.props#L120-L122

Have you any ideas on a reasonable cadence for updates?

@DrewScoggins another possibility for what we were seeing in some of those perf tests is that the FX code (at the IL level) has shifted away from what it was back on 3/17 or thereabouts, and so PGO data no longer applies. Currently we can only tell this is happening indirectly.

In general if we don't update PGO data we expect to see a decline in perf over time as mismatches between what was measured and what is being prejitted or jitted become more and more pronounced. For any given test the jumps may be at particular points; if we could "integrate" all these over a lot of test we'd see more of a smooth overall degradation.

davidwrighton commented 3 years ago

Correct, we haven't had an update since initial checkin. @Lxiamail is working on the build so that we'll have regular flow, but the build infrastructure has proven difficult to update. Once that is up and running it should be straightforward to receive updates about once a day.