dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/x64: 36 Regressions on 6/24/2026 7:31:32 AM +00:00

Open
#75,837 2 comments 0 reactions 0 assignees View on GitHub
arch-wasm arch-x64 branch-refs/heads/main compilationmode-wasm kind-micro Look Again os-linux perf-regression runkind-micro runtimetype-coreclr untriaged
Dominant language
No language data
Stars
10
Forks
8
PR merge metrics
PR metrics pending

Description

### Run Information

Name | Value
-- | --
Architecture | x64
OS | ubuntu 22.04
Queue | ViperUbuntu
Baseline | [0d1a20fb14109f277df06ebee3f83c964f9dcc61](https://github.com/dotnet/runtime/commit/0d1a20fb14109f277df06ebee3f83c964f9dcc61)
Compare | [e3cbc00cd3e0b511ad36dc240010eb2b9eefc3b7](https://github.com/dotnet/runtime/commit/e3cbc00cd3e0b511ad36dc240010eb2b9eefc3b7)
Diff | [Diff](https://github.com/dotnet/runtime/compare/0d1a20fb14109f277df06ebee3f83c964f9dcc61...e3cbc00cd3e0b511ad36dc240010eb2b9eefc3b7)
Configs | CompilationMode:wasm, RunKind:micro, RuntimeType:coreclr

### Regressions in System.Text.Json.Tests.Perf_Reader

Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio
-- | -- | -- | -- | -- | -- | -- | -- | --
|

  • [ReadSpanEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.69 ms | 2.28 ms | 1.35 | 0.31 | False | | |
|
  • [ReadSingleSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.18 ms | 1.53 ms | 1.30 | 0.27 | False | | |
|
  • [ReadReturnBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.28 ms | 1.66 ms | 1.29 | 0.30 | False | | |
|
  • [ReadReturnBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 427.35 μs | 539.96 μs | 1.26 | 0.25 | False | | |
|
  • [ReadSpanEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 289.56 μs | 364.23 μs | 1.26 | 0.28 | False | | |
|
  • [ReadSingleSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.64 ms | 2.02 ms | 1.23 | 0.25 | False | | |
|
  • [ReadSingleSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 180.17 μs | 218.73 μs | 1.21 | 0.25 | False | | |
|
  • [ReadSpanEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 344.42 μs | 417.49 μs | 1.21 | 0.31 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 381.41 μs | 460.21 μs | 1.21 | 0.21 | False | | |
|
  • [ReadSingleSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 351.53 μs | 423.64 μs | 1.21 | 0.27 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.72 ms | 2.08 ms | 1.20 | 0.29 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 194.91 μs | 234.46 μs | 1.20 | 0.29 | False | | |
|
  • [ReadSingleSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 283.79 μs | 338.84 μs | 1.19 | 0.28 | False | | |
|
  • [ReadReturnBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.14 ms | 2.55 ms | 1.19 | 0.23 | False | | |
|
  • [ReadSpanEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.18 ms | 1.39 ms | 1.18 | 0.27 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.23 ms | 1.43 ms | 1.16 | 0.28 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 302.97 μs | 351.13 μs | 1.16 | 0.31 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.77 ms | 2.02 ms | 1.14 | 0.28 | False | | |
|
  • [ReadSpanEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 180.49 μs | 205.01 μs | 1.14 | 0.25 | False | | |
|
  • [ReadMultiSpanSequenceEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 15.96 ms | 17.92 ms | 1.12 | 0.29 | False | | |
|
  • [ReadSpanEmptyLoop - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 15.98 ms | 17.34 ms | 1.09 | 0.23 | False | | |
|
  • [ReadReturnBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 203.76 μs | 216.58 μs | 1.06 | 0.26 | False | | |

![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
[Test Report]()

### Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

```cmd
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Perf_Reader*'
```

### System.Text.Json.Tests.Perf_Reader.ReadSpanEmptyLoop(IsDataCompact: False, TestCase: BroadTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSingleSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: DeepTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadReturnBytes(IsDataCompact: False, TestCase: DeepTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadReturnBytes(IsDataCompact: False, TestCase: LotsOfNumbers)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSpanEmptyLoop(IsDataCompact: False, TestCase: LotsOfStrings)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSingleSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: BroadTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSingleSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: Json400B)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSpanEmptyLoop(IsDataCompact: False, TestCase: LotsOfNumbers)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: LotsOfNumbers)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSingleSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: LotsOfNumbers)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: BroadTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: Json400B)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSingleSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: LotsOfStrings)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadReturnBytes(IsDataCompact: False, TestCase: BroadTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSpanEmptyLoop(IsDataCompact: False, TestCase: DeepTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: DeepTree)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: LotsOfStrings)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: Json4KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSpanEmptyLoop(IsDataCompact: False, TestCase: Json400B)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: False, TestCase: Json40KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadSpanEmptyLoop(IsDataCompact: False, TestCase: Json40KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Reader.ReadReturnBytes(IsDataCompact: False, TestCase: Json400B)

#### ETL Files

#### Histogram

#### JIT Disasms

### Docs

[Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md)
[Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

---

### Run Information

Name | Value
-- | --
Architecture | x64
OS | ubuntu 22.04
Queue | ViperUbuntu
Baseline | [0d1a20fb14109f277df06ebee3f83c964f9dcc61](https://github.com/dotnet/runtime/commit/0d1a20fb14109f277df06ebee3f83c964f9dcc61)
Compare | [e3cbc00cd3e0b511ad36dc240010eb2b9eefc3b7](https://github.com/dotnet/runtime/commit/e3cbc00cd3e0b511ad36dc240010eb2b9eefc3b7)
Diff | [Diff](https://github.com/dotnet/runtime/compare/0d1a20fb14109f277df06ebee3f83c964f9dcc61...e3cbc00cd3e0b511ad36dc240010eb2b9eefc3b7)
Configs | CompilationMode:wasm, RunKind:micro, RuntimeType:coreclr

### Regressions in System.Text.Json.Tests.Perf_Segment

Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio
-- | -- | -- | -- | -- | -- | -- | -- | --
|

  • [ReadMultiSegmentSequenceUsingSpan - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.73 ms | 2.06 ms | 1.19 | 0.30 | False | | |
|
  • [ReadMultiSegmentSequence - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 170.75 ms | 203.28 ms | 1.19 | 0.23 | False | | |
|
  • [ReadMultiSegmentSequence - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.76 ms | 19.79 ms | 1.18 | 0.22 | False | | |
|
  • [ReadMultiSegmentSequenceUsingSpan - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 167.94 ms | 196.61 ms | 1.17 | 0.32 | False | | |
|
  • [ReadSingleSegmentSequence - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.10 ms | 17.49 ms | 1.09 | 0.32 | False | | |
|
  • [ReadMultiSegmentSequence - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 168.36 ms | 182.48 ms | 1.08 | 0.30 | False | | |
|
  • [ReadMultiSegmentSequence - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.72 ms | 1.85 ms | 1.08 | 0.28 | False | | |
|
  • [ReadSingleSegmentSequenceByN - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.73 ms | 1.85 ms | 1.07 | 0.35 | False | | |
|
  • [ReadSingleSegmentSequence - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 167.24 ms | 178.55 ms | 1.07 | 0.27 | False | | |
|
  • [ReadSingleSegmentSequenceByN - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 167.94 ms | 178.18 ms | 1.06 | 0.22 | False | | |
|
  • [ReadMultiSegmentSequenceUsingSpan - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.73 ms | 1.82 ms | 1.05 | 0.36 | False | | |

![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
[Test Report]()

### Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

```cmd
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Perf_Segment*'
```

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequenceUsingSpan(segmentSize: 4096, TestCase: Json4KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequence(segmentSize: 8192, TestCase: Json400KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequence(segmentSize: 8192, TestCase: Json40KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequenceUsingSpan(segmentSize: 8192, TestCase: Json400KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadSingleSegmentSequence(TestCase: Json40KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequence(segmentSize: 4096, TestCase: Json400KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequence(segmentSize: 8192, TestCase: Json4KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadSingleSegmentSequenceByN(numberOfBytes: 8192, TestCase: Json4KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadSingleSegmentSequence(TestCase: Json400KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadSingleSegmentSequenceByN(numberOfBytes: 8192, TestCase: Json400KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Perf_Segment.ReadMultiSegmentSequenceUsingSpan(segmentSize: 8192, TestCase: Json4KB)

#### ETL Files

#### Histogram

#### JIT Disasms

### Docs

[Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md)
[Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the listed benchmarks in src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonReader/Perf.Reader.cs, especially the referenced ReadSpanEmptyLoop and ReadSingleSpanSequenceEmptyLoop entries. Compare the baseline and test commits and use the linked benchmark reports to identify the cause of the 36 regressions; done means the regression is explained and the affected benchmarks no longer regress.

Written by the indexing model from the issue text.

Assessment

Tech stack
ubuntu, wasm
Domain
performance, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.