-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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] ARM64 regression in System.Diagnostics.Perf_Activity.ActivityAllocations #68624
Comments
Possibly from #67920. |
@tarekgh thinks #67920 is not the likely suspect. Another possibility given that this is arm64 is #66407. SPMI Diffs show there was an impact to The regression has persisted since then, so it does not look like noise. |
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. |
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsRun 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
|
cc @TIHan |
@kunalspathak and I looked at this a bit ago. We believe that the regression wasn't caused by the mod operation. |
So I think there are 2 separate regressions going on... For https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_arm64_ubuntu%2018.04/System.Diagnostics.Perf_Activity.ActivityAllocations(idFormat%3a%20W3C).html, the regression is kind of stay and the commit range is 5c57f2c...7bac4e8. The commit range where this benchmark is affected is 3635e0f...f7d9d6d. Just to be sure, you might want to see if it repros and if yes, we can do asmdiff to see what is causing it. |
@tarekgh - @TIHan spent time and did investigation if #66407 is the cause, and he was not able to repro the regression. In fact, he see some improvements. I see that #67920 added a layer of Enumerator() and not sure if that is causing it, but the regression is consistent on windows/ubuntu. Did you verify by locally running the benchmarks if it was not with the Activity related change? There was also #67938 (which I doubt might be related). |
#67920 is a code is not exercised at all in the perf test scenario, so I am positive this shouldn't be related to the regression we are seeing.
This could be related; the only part that can affect this test is the change:
|
Thanks! I will assign it to you then. |
@tarekgh I think we found the cause, basically this case of |
I'll assign the issue back to @TIHan then. Thanks for finding the root cause. |
Will resolve this regression in #68885 |
@tarekgh Apologies for circling around. I spent some time and did a much deeper investigation into this. It turns out it is not caused by the I'm assigning back to you. |
I have done some measurements locally on my machine to see the cost of the change #67938, I got the following: With #67938 change
Without #67938 change
I am seeing the By that, my change could be contributing here but I don't think it is the only culprit in this regression. Also, considering we need the features we have added here, it is acceptable to have this regression especially the test is not really testing the real scenario but only the part that initializes the empty Activity object. So, this regression wouldn't be noticeable in the real scenario of using Activity class. I'll leave it to anyone else who wants to dig more to see if there is anything contributing to this, or if we are ok to resolve this issue. |
One last thing I just notices, I am seeing this issue marked with Ubuntu 18.04. Although I did the measurement on my machine which has Windows OS but if my change is the cause, it should show on all OS's and all architectures as the change is not OS or architecture dependent. |
And this is on arm64, did you check on windows/arm64?
Sounds good, and I am sure you verified that we didn't introduce any regression in normal path.
Yes, we have seen that in past in other benchmarks and fix it by adding relevant test in dotnet/performance. e.g. dotnet/performance#2479. If you don't mind fixing the benchmark, that will be great. |
No, I didn't try arm. But I am wondering now, wouldn't this be more related to JIT then? I cannot think of anything in our changes that can cause such regression in specific architecture.
I would keep the test as it is for now as it looks sensitive to the JIT changes. So, I am seeing the value to keep it. We can consider adding more tests later for real usage scenarios with Activity. |
@TIHan PTAL. |
@JulieLeeMSFT This regression is occurring in x64 as well, so it's not related to changes in the JIT for ARM64. The regression was also said to be acceptable:
Closing. Anyone is free to re-open this if they deem it critical. |
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
The text was updated successfully, but these errors were encountered: