Repository navigation
Description
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.Linq.Tests.Perf_Enumerable
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 199.94 ns | 72.37 ns | 0.36 | 0.00 | False | ||||
| 200.10 ns | 72.65 ns | 0.36 | 0.01 | False | ||||
| 226.14 ns | 102.07 ns | 0.45 | 0.01 | False | ||||
| 225.70 ns | 102.29 ns | 0.45 | 0.01 | False | ||||
| 223.18 ns | 102.02 ns | 0.46 | 0.01 | False | ||||
| 197.44 ns | 105.02 ns | 0.53 | 0.01 | False | ||||
| 452.81 ns | 378.89 ns | 0.84 | 0.24 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Linq.Tests.Perf_Enumerable*'Details
System.Linq.Tests.Perf_Enumerable.Aggregate(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_FirstElementMatches(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Max(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Average(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Min(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.LastWithPredicate_FirstElementMatches(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.LastWithPredicate_FirstElementMatches(input: IOrderedEnumerable)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.IO.Tests.Perf_FileStream
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 213.46 ms | 153.68 ms | 0.72 | 0.25 | False | ||||
| 204.57 ms | 153.48 ms | 0.75 | 0.26 | False | ||||
| 630.00 μs | 503.62 μs | 0.80 | 0.42 | False | ||||
| 2.44 ms | 2.22 ms | 0.91 | 0.38 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.Perf_FileStream*'Details
System.IO.Tests.Perf_FileStream.CopyToFileAsync(fileSize: 104857600, options: Asynchronous)
ETL Files
Histogram
JIT Disasms
System.IO.Tests.Perf_FileStream.CopyToFileAsync(fileSize: 104857600, options: None)
ETL Files
Histogram
JIT Disasms
System.IO.Tests.Perf_FileStream.Write_NoBuffering_PreallocationSize(fileSize: 1048576, userBufferSize: 16384, options: None)
ETL Files
Histogram
JIT Disasms
System.IO.Tests.Perf_FileStream.CopyToFileAsync(fileSize: 1048576, options: None)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.Collections.Perf_Frozen<Int16>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 3.24 μs | 3.05 μs | 0.94 | 0.01 | False | ||||
| 28.26 μs | 26.82 μs | 0.95 | 0.01 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Perf_Frozen<Int16>*'Details
System.Collections.Perf_Frozen<Int16>.ToFrozenSet(Count: 64)
ETL Files
Histogram
JIT Disasms
System.Collections.Perf_Frozen<Int16>.ToFrozenSet(Count: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.IO.Tests.MemoryStreamTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 153.56 μs | 132.31 μs | 0.86 | 0.00 | False | ||||
| 2.41 μs | 2.09 μs | 0.87 | 0.00 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.MemoryStreamTests*'Details
System.IO.Tests.MemoryStreamTests.WriteByte(Size: 65536)
ETL Files
Histogram
JIT Disasms
System.IO.Tests.MemoryStreamTests.WriteByte(Size: 1024)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.Tests.Perf_Enum
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 283.10 ns | 250.80 ns | 0.89 | 0.23 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Enum*'Details
System.Tests.Perf_Enum.StringFormat(value: 32)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.Threading.Channels.Tests.UnboundedChannelPerfTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 29.27 ms | 12.48 ms | 0.43 | 0.37 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Threading.Channels.Tests.UnboundedChannelPerfTests*'Details
System.Threading.Channels.Tests.UnboundedChannelPerfTests.PingPong
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.Threading.Channels.Tests.BoundedChannelPerfTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 27.68 ms | 11.90 ms | 0.43 | 0.41 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Threading.Channels.Tests.BoundedChannelPerfTests*'Details
System.Threading.Channels.Tests.BoundedChannelPerfTests.PingPong
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | arm64 |
| OS | ubuntu 22.04 |
| Queue | AmpereUbuntu |
| Baseline | 98d2d533e9572678123721a78a59173daf63acf9 |
| Compare | 2790c60428c37ef3c0a33941e10f867aa79c51b7 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Improvements in System.Threading.Channels.Tests.SpscUnboundedChannelPerfTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 27.50 ms | 11.69 ms | 0.43 | 0.36 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Threading.Channels.Tests.SpscUnboundedChannelPerfTests*'Details
System.Threading.Channels.Tests.SpscUnboundedChannelPerfTests.PingPong
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository



















Activity
LoopedBard3 commentedon Jun 11, 2026
🔍 Automated Triage Analysis
Summary: Verified improvement in Aggregate(input: IEnumerable) — caused by commit 92296631121c ("JIT: add post-inline cleanup for no-return calls (#128513)"). 3 tests bisected to related culprit commits.
Finding Confidence: 5/5 (analysis accuracy)
Improvement Confidence: 5/5 (likelihood of true improvement)
Likely Cause: 92296631121c2eb917f58dfca70864821cba250a
🤖 Proposed Next Actions: Known-cause improvement — link & close — 3 proposed (rule
R2_known_improvement— see Full Analysis for the table).📊 Full Analysis (click to expand)
Summary: 15 confirmed improvements across LINQ (-54–64%), Threading.Channels (-57%), MemoryStream.WriteByte (-13%), FileStream (-25–28%), and FrozenSet (-5–6%) on Linux/arm64. The LINQ improvements are likely attributed to commit a2ec76b0691e (JIT loop cloning profitability heuristic), Channels improvements to b836f4b9a125 (threadpool semaphore reapply), and MemoryStream to 33b43115a73e (revert MemoryStream breaking change). Finding confidence 4/5, improvement confidence 4/5.
Issue Overview
Test Analysis
Legend: μ=mean, σ=stddev, n=runs, z=z-score, Thresh%=adaptive threshold
Finding Confidence: 4/5 - Excellent historical data (297–300 runs), low CV for most tests, clear step changes. Not 5/5 because no verification via RunWithBuildAtHash was performed.
Candidate Stack Relevance
src/coreclr/jit/compiler.h,jitconfigvalues.h,jitmetadatalist.hsrc/coreclr/,src/libraries/System.Threading.Thread/src/libraries/System.Private.CoreLib/src/System/IO/MemoryStream.cssrc/coreclr/jit/compiler.cpp,fginline.cppsrc/coreclr/jit/lsra.cpp,lsra.hsrc/coreclr/jit/objectalloc.cppConfirmed Improvements
System.Linq.Tests.Perf_Enumerable (6 tests, -46.8% to -63.8%)
System.Threading.Channels (3 tests, -57.0% to -57.5%)
System.IO.Tests.MemoryStreamTests.WriteByte (2 tests, -13.3% to -13.8%)
System.IO.Tests.Perf_FileStream (3 tests, -20.1% to -28.0%)
System.Collections.Perf_Frozen.ToFrozenSet (2 tests, -5.1% to -5.9%)
Noise / Borderline Tests
Open Questions
Recommended Actions
Bisection Results
Total bisection time: 3975s
Success rate: 3/5 tests
System.Linq.Tests.Perf_Enumerable.Aggregate(input: IEnumerable)
Helix jobs
7a0e8823-5afa-4dbf-b7bb-a40d964d29f7bb737b0f-b1ee-40b7-a75c-59f98326edf14ae0b9ba-795f-4556-b86b-1fcf68b71458Per-commit measurements
7dc7499c8e5c772147228c6b4a662a97471e92296631121cdb87610848741301a507f6a45e837f7300b5Bisection details
…[earlier output omitted]
● get_single_commit_summary (MCP: PerfTriageMcp) · owner: "dotnet", repo: "runtime", sha: "92296631…
└ {"index":null,"sha":"92296631121c2eb917f58dfca70864821cba250a","abbrevSh...
Excellent! I have all the information needed. The culprit commit is a JIT optimization by Andy Ayers that adds a post-inline cleanup phase for no-return calls. This is clearly related to the
System.Linq.Tests.Perf_Enumerable.Aggregatetest since LINQ'sAggregatemethod uses inlining heavily, and this JIT improvement cleans up dead code after inlining, producing a smaller/faster flow graph.System.IO.Tests.Perf_FileStream.CopyToFileAsync(fileSize: 104857600, options: Asynchronous)
Helix jobs
2f999d17-c486-4e12-9cb7-72b814a65cebcd35da39-117c-42a6-92b7-19e8533fc0422c6ad614-4982-4a9c-8f62-0a1117960cb9Per-commit measurements
a2ec76b0691eb3db78f44230f9067394550333b43115a73e5e837f7300b5772147228c6b7dc7499c8e5cb836f4b9a125Bisection details
…[earlier output omitted]
7928ee19487f793510f575ab347` is the culprit. Let me examine it.
● get_single_commit_summary (MCP: PerfTriageMcp) · owner: "dotnet", repo: "runtime", sha: "b836f4b9…
└ {"index":null,"sha":"b836f4b9a12587928ee19487f793510f575ab347","abbrevSh...
This commit is clearly related to the test. It's a major threadpool semaphore rewrite that would directly affect async I/O performance. Let me compile the final result.
System.Collections.Perf_Frozen.ToFrozenSet(Count: 64)
Helix jobs
52e96fb8-58f2-4416-acb5-f0dd75894dad7c934948-276c-4be2-8aa3-27f45d967b8dd0aa947e-4230-4e4a-80e8-9966b38f4dfdPer-commit measurements
7dc7499c8e5c5e837f7300b5772147228c6b4a662a97471e92296631121cdb8761084871301a507f6a4Bisection details
…[earlier output omitted]
The culprit is commit
92296631121c2eb917f58dfca70864821cba250a. Let me examine it.● get_single_commit_summary (MCP: PerfTriageMcp) · owner: "dotnet", repo: "runtime", sha: "92296631…
└ {"index":null,"sha":"92296631121c2eb917f58dfca70864821cba250a","abbrevSh...
Now I have all the data needed. The culprit commit is
92296631121c2eb917f58dfca70864821cba250a— a JIT optimization that trims dead code after no-return calls exposed by inlining. This directly improves codegen for collections code that uses throw helpers.System.Tests.Perf_Enum.StringFormat(value: 32)
Helix jobs
9dbc0842-325e-466b-98cc-226f78fb972aBisection details
…[earlier output omitted]
✗ get_helix_job_result (MCP: PerfTriageMcp) · jobId: "9dbc0842-325e-466b-98cc-226f78fb972a"
└ MCP server 'PerfTriageMcp': TypeError: fetch failed
✗ get_helix_job_result (MCP: PerfTriageMcp) · jobId: "9dbc0842-325e-466b-98cc-226f78fb972a"
└ MCP server 'PerfTriageMcp': TypeError: fetch failed
✗ get_helix_job_result (MCP: PerfTriageMcp) · jobId: "9dbc0842-325e-466b-98cc-226f78fb972a"
└ MCP server 'PerfTriageMcp': TypeError: fetch failed
✗ get_helix_job_result (MCP: PerfTriageMcp) · jobId: "9dbc0842-325e-466b-98cc-226f78fb972a"
└ MCP server 'PerfTriageMcp': TypeError: fetch failed
✗ get_helix_job_result (MCP: PerfTriageMcp) · jobId: "9dbc0842-325e-466b-98cc-226f78fb972a"
└ MCP server 'PerfTriageMcp': TypeError: fetch failed
The MCP server has been consistently failing with "TypeError: fetch failed" for an extended period. The Helix job was successfully submitted and was running, but I cannot retrieve results due to persistent connectivity issues with the PerfTriageMcp server.
System.Threading.Channels.Tests.UnboundedChannelPerfTests.PingPong
Bisection details
…[earlier output omitted]
│ /app/output/logs/74413/bisection/process-1781173233736-635.log 2>/dev/null
└ 105 lines...
● List bisection responses (shell)
│ ls /app/output/logs/74413/bisection/responses/
└ 5 lines...
● Find Helix tool references (shell)
│ grep -r "GetCommitRangeHashes|SubmitHelixJob|GetHelixJobResult|RunWithBui
│ ldAtHash" /app/ --include="*.py" -l 2>/dev/null
└ 7 lines...
● Check how bisection agent uses tools (shell)
│ grep -A5 "SubmitHelixJob|GetCommitRangeHashes"
│ /app/perf_triage/engine/bisection_agent.py | head -60
└ 61 lines...
● Check for alternative MCP access (shell)
│ # Try to reach MCP server on any alternative ports or check if there's a
│ way to start it
│ curl -s http://localhost:5588/tools 2>&1 | head -5
│ curl -s http://localhost:5589/health 2>&1 | head -5
│ # Check if dotnet is available to start the server…
└ 5 lines...
The MCP server providing bisection tools (GetCommitRangeHashes, SubmitHelixJob, GetHelixJobResult) is not running at localhost:5588 and cannot be started. I cannot submit Helix jobs to perform the actual bisection.
🤖 Proposed Next Actions
Rule:
R2_known_improvement— Known-cause improvement — link & close.Verified improvement attributed to commit 92296631121c (finding 5/5, improvement 5/5, bisection RELATED).
92296631121cuntriagedcompletedGenerated by PerfTriageAgent on 2026-06-11 10:23 UTC