-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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 measurement changed due to BDN update #66664
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. |
BDN update commit: dotnet/performance@035dde5 |
cc @adamsitnik |
dotnet/perf-autofiling-issues#3986 is likely affected by dotnet/performance@742bc35 BDN update |
Tagging subscribers to this area: @dotnet/runtime-infrastructure Issue DetailsRun Information
Regressions in PerfLabTests.LowLevelPerf
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'PerfLabTests.LowLevelPerf*' PayloadsHistogramPerfLabTests.LowLevelPerf.GenericClassGenericInstanceMethod
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
Regressions in System.Numerics.Tests.Perf_VectorOf<UInt32>
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Numerics.Tests.Perf_VectorOf<UInt32>*' PayloadsHistogramSystem.Numerics.Tests.Perf_VectorOf<UInt32>.DivisionOperatorBenchmark
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Diagnostics.Perf_Activity
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Diagnostics.Perf_Activity*' PayloadsHistogramSystem.Diagnostics.Perf_Activity.ActivityAllocations(idFormat: W3C)
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.CtorGivenSize<String>
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.CtorGivenSize<String>*' PayloadsHistogramSystem.Collections.CtorGivenSize<String>.Stack(Size: 512)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
|
I doubt this will be the case. does adding a Boolean field can cause this regression? |
@tarekgh I was able to confirm that one of the commits within the provided range has regressed perf: git clone https://github.com/dotnet/runtime.git
cd runtime
git checkout 3e2d483153adcab27033340fa40ad0bcdc3acc2a
build.cmd -c Release -subset clr+libs
robocopy .\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\7.0.0\ .\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\baseline\ /E
git checkout 6e26872d0a282aa71ea792c3550a3cb0e8bf4e71
taskkill /IM "dotnet.exe" /F
build.cmd -c Release -subset clr+libs
robocopy .\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\7.0.0\ .\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\compare\ /E
cd ..
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net7.0 --filter 'System.Diagnostics.Perf_Activity.ActivityAllocations*' --corerun .\runtime\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\baseline\corerun.exe .\runtime\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\compare\corerun.exe
|
@adamsitnik thanks for confirming. I have tried more, and I am seeing my commit #66489 is what caused the issue. But my change is just adding a property with a Boolean backend field to the Activity object. @EgorBo is this something you can help with looking why this is happening? |
ARM64: dotnet/perf-autofiling-issues#4140 |
@EgorBo is right, the regression is caused by GC regions (cc @mangod9). To get ETW trace file I've extended the repro provided above (#66664 (comment)) with: py .\performance\scripts\benchmarks_ci.py -f net7.0 --filter 'System.Diagnostics.Perf_Activity.ActivityAllocations*' --corerun .\runtime\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\baseline\corerun.exe .\runtime\artifacts\bin\testhost\net7.0-windows-Release-x64\shared\Microsoft.NETCore.App\compare\corerun.exe --bdn-arguments "--profiler ETW --iterationCount 15 --invocationCount 1096400 --keepFiles true" To get the nice table included below: https://github.com/dotnet/performance/blob/main/docs/profiling-workflow-dotnet-runtime.md#identifying-regressions Overweight report for symbols common between both files
In this report, overweight is ratio of actual growth compared to 15.6%. Interest level attempts to identify smaller methods which changed a lot. These are likely the most interesting frames to sart investigating An overweight of greater than 100% indicates the symbol grew in cost more than average. High overweights are a likely source of regressions and represent good places to investigate. Only symbols that have at least 2% impact are shown.
|
Tagging subscribers to this area: @dotnet/gc Issue DetailsRun Information
Regressions in PerfLabTests.LowLevelPerf
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'PerfLabTests.LowLevelPerf*' PayloadsHistogramPerfLabTests.LowLevelPerf.GenericClassGenericInstanceMethod
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
Regressions in System.Numerics.Tests.Perf_VectorOf<UInt32>
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Numerics.Tests.Perf_VectorOf<UInt32>*' PayloadsHistogramSystem.Numerics.Tests.Perf_VectorOf<UInt32>.DivisionOperatorBenchmark
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Diagnostics.Perf_Activity
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Diagnostics.Perf_Activity*' PayloadsHistogramSystem.Diagnostics.Perf_Activity.ActivityAllocations(idFormat: W3C)
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.CtorGivenSize<String>
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.CtorGivenSize<String>*' PayloadsHistogramSystem.Collections.CtorGivenSize<String>.Stack(Size: 512)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
Attribute these GC related regressions to the decommit behavior for regions that's being tracked; #73592 & updated the milestone. |
Closing in lieu of #73592 with the latest Net 8.0 results. |
Run Information
Regressions in PerfLabTests.LowLevelPerf
Test Report
Repro
Payloads
Baseline
Compare
Histogram
PerfLabTests.LowLevelPerf.GenericClassGenericInstanceMethod
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in System.Numerics.Tests.Perf_VectorOf<UInt32>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Numerics.Tests.Perf_VectorOf<UInt32>.DivisionOperatorBenchmark
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Diagnostics.Perf_Activity
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Diagnostics.Perf_Activity.ActivityAllocations(idFormat: W3C)
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.CtorGivenSize<String>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Collections.CtorGivenSize<String>.Stack(Size: 512)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: