-
Notifications
You must be signed in to change notification settings - Fork 0
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
[Perf -14%] Microsoft.Extensions.Logging.LoggingOverhead (3) #3249
Comments
Benchmark-interval only analysis for Baseline
Change
|
Perfview can't find the symbols for coreclr for those two traces so we can't drill in further. |
It could be that this helper is just called more often; the callers are logging methods. Source for those callers hasn't changed either. Suggests we need to look for recent jit codegen diffs in the key managed methods. |
I don't see anything in the commit history that jumps out as a likely culprit. Am building before/after runtimes so I can drill in further. |
I don't see any jit codegen changes, but still need to make sure I'm looking at the right version of the logging dll. |
I can repro this locally. Still investigating.
|
Seems like perhaps we're just taking longer to look things up in the generic handle cache? Need to check how much of the lookup code gets inlined into JIT_VirtualFunctionPointer. @VSadov can you think of any recent changes (Oct 29-Nov 4) that might have caused something like this? I don't see anything in jit or runtime. |
Nothing really stands out from the diffs. There was some change for the JIT sorting, switching from qsort to a stable sort. But that should either affect nothing or affect a lot of scenarios. I can't see how it would impact just this. JIT_VirtualFunctionPointer is just a hash lookup and I do not see anything changed there in an obvious way. And regression there would probably affect more cases. |
New hypothesis: perhaps the windows_nt -> windows change broke how PGO is applied to the runtime, and these tests are particularly sensitive to native PGO? Trying to verify now. |
Seems plausible it was ? From the build logs I have on hand:
Note how the number of methods compiled for speed dropped dramatically. Am going to try building at dotnet/runtime@e691753 (before) and dotnet/runtime@b37f10a (after) to verify. |
Both those hashes show the PGO data is not applied effectively, so the impactful change was sometime before. Am going to keep looking. Next to scrutinize: |
Looks like it was dotnet/runtime@8c6a049 (dotnet/runtime#41897). Suspect some of the build flags got changed and this disqualified some methods from leveraging existing PGO data; am going to try and verify by extracting the flags for jithelpers.obj. |
Only real flag diffs I see are for PCH; that might be enough as the code we inline into So seems likely that if we regenerate native PGO data we'll get this perf back. @brianrob do you know when we next expect to see a PGO update for the runtime repo? |
Ownership of PGO in the runtime repo is currently under discussion, so I don't currently have a timeline. Once this gets resolved, I'd expect updates to start coming. |
…0810.15 (#3249) Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , System.Threading.Channels From Version 8.0.0-rc.1.23410.11 -> To Version 8.0.0-rc.1.23410.15 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Run Information
Regressions in Microsoft.Extensions.Logging.LoggingOverhead
Related Issue on x64 ubuntu
[Perf 21%] Microsoft.Extensions.Logging.LoggingOverhead (2)
Historical Data in Reporting System
Repro
Histogram
Microsoft.Extensions.Logging.LoggingOverhead.NoArguments
Microsoft.Extensions.Logging.LoggingOverhead.NoArguments_DefineMessage
Microsoft.Extensions.Logging.LoggingOverhead.TwoArguments_DefineMessage
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: