-
Notifications
You must be signed in to change notification settings - Fork 272
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
Performance triage by bisecting the range #2916
Comments
Would love to see something like this! Are you imagining enhancing Would be very interesting to try to factor this as a |
It is a good idea to enhance I can propose changes to |
I would like to revive the discussion about the triage script. I think that with recent advancements by @LoopedBard3 on https://github.com/dotnet/performance/blob/main/scripts/benchmarks_local.py. We could utilize this script to binary search thru commits to identify the source of regression (or improvement). My idea for the script would be: Algorithm steps:
Further ideas:
What do you think? @sblom @kotlarmilos @LoopedBard3 |
Good idea. There is already
I would like to explore the possibility of implementing it using @matouskozak @LoopedBard3 I suggest we schedule a call to discuss it further. |
I selected a few benchmarks from Mono perf issues that regressed in the past and have stable results to be suitable for testing the bisecting algorithm. The first set comes from dotnet/perf-autofiling-issues#21818 (linux-x64, AOT):System.Memory.ReadOnlySpanbaseline: 9d08b24d743d0c57203a55c3d0c6dd1bc472e57e System.Globalization.Tests.StringSearchbaseline: da4e544809b3b10b7db8dc170331988d817240d7 The second set comes from dotnet/perf-autofiling-issues#15795 (linux-arm64, AOT):System.Tests.Perf_DateTimeOffset, System.Tests.Perf_DateTime, System.Globalization.Tests.Perf_DateTimeCultureInfobaseline: 0fc78e62bb0b8d824efe7421983702b97a60def6 The third set comes from dotnet/perf-autofiling-issues#14570 (linux-arm64, AOT):System.Runtime.Intrinsics.Tests.Perf_Vector128Of, System.Runtime.Intrinsics.Tests.Perf_Vector128Of, System.Runtime.Intrinsics.Tests.Perf_Vector128Floatbaseline: dce343987e81ce6cf045d983ce62d8e117d2c142 The last set comes from dotnet/perf-autofiling-issues#22688 (linux-x64, JIT):This set represents improvements (in contrast with previous three that represented regression) System.Text.Json.Serialization.Tests.WriteJsonbaseline: 736dabeca728ccf8b911d96d1b4c575b4d0db7d2 |
Thanks @matouskozak! Let's create mock data based on your input and prototype the bisecting process using a moving average filter-like approach. @LoopedBard3 since you worked on the script for local benchmarking, feel free to reflect on missing features (comparer, bisect, etc). |
The idea is to improve performance triage for complex cases (i.e. dotnet/perf-autofiling-issues#11539 and dotnet/perf-autofiling-issues#11536) by bisecting the range and identifying a commit that caused the regression. Such tool could input commit range and microbenchmark grouping, and could output a commit that caused the regression with logs of a searched path.
The tool could be made available for local environment where it is limited to a particular os and architecture, which I consider as a low effort. Also, it could be added as an extension to the dashboard where for a particular set of microbenchmarks it can be executed, which I consider as a mid to high effort with broader scope and easy to use approach, but with security concerns.
I would like to obtain feedback before making it available for local environments. If such tool is considered as useful in the dashboard, I am ready to help.
The text was updated successfully, but these errors were encountered: