dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/arm64: 79 Improvements on 7/13/2026 8:32:42 PM +00:00

Open
#76,339 3 comments 0 reactions 0 assignees View on GitHub
arch-arm64 bdn-update branch-refs/heads/main compilationmode-tiered kind-micro Look Again os-linux perf-improvement runkind-micro runtime-coreclr untriaged
Dominant language
No language data
Stars
10
Forks
8
PR merge metrics
PR metrics pending

Description

### Run Information

Name | Value
-- | --
Architecture | arm64
OS | azurelinux 3.0
Queue | CobaltAzureLinux
Baseline | [a90733cc40d6c7037a37d9c2b5c2403b8cac490f](https://github.com/dotnet/runtime/commit/a90733cc40d6c7037a37d9c2b5c2403b8cac490f)
Compare | [f2b30309fd488f1c3fd41c18723a7c80a81f4c67](https://github.com/dotnet/runtime/commit/f2b30309fd488f1c3fd41c18723a7c80a81f4c67)
Diff | [Diff](https://github.com/dotnet/runtime/compare/a90733cc40d6c7037a37d9c2b5c2403b8cac490f...f2b30309fd488f1c3fd41c18723a7c80a81f4c67)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Net.Http.Tests.SocketsHttpHandlerPerfTest

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

  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 10224.38 μs | 429.60 μs | 0.04 | 0.90 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 9397.11 μs | 414.74 μs | 0.04 | 0.92 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 9187.18 μs | 432.98 μs | 0.05 | 0.92 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 12375.40 μs | 667.09 μs | 0.05 | 0.92 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 8395.17 μs | 657.30 μs | 0.08 | 0.92 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6642.92 μs | 528.03 μs | 0.08 | 0.92 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 130.50 μs | 57.25 μs | 0.44 | 0.71 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 141.89 μs | 63.14 μs | 0.45 | 0.74 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 73.70 μs | 36.91 μs | 0.50 | 0.60 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 125.22 μs | 65.51 μs | 0.52 | 0.57 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 75.94 μs | 40.37 μs | 0.53 | 0.56 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 72.32 μs | 41.10 μs | 0.57 | 0.54 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 119.86 μs | 68.15 μs | 0.57 | 0.47 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 73.11 μs | 41.75 μs | 0.57 | 0.56 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 70.85 μs | 42.63 μs | 0.60 | 0.48 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 71.14 μs | 43.49 μs | 0.61 | 0.56 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 124.43 μs | 78.19 μs | 0.63 | 0.54 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 118.70 μs | 76.32 μs | 0.64 | 0.49 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 117.77 μs | 76.24 μs | 0.65 | 0.48 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 121.80 μs | 79.36 μs | 0.65 | 0.55 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 111.88 μs | 76.74 μs | 0.69 | 0.66 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 135.26 μs | 93.10 μs | 0.69 | 0.71 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 154.89 μs | 110.13 μs | 0.71 | 0.72 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 123.42 μs | 111.32 μs | 0.90 | 0.72 | False | | |

![graph]()
![graph]()
![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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Net.Http.Tests.SocketsHttpHandlerPerfTest*'
```

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: True, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: False, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: True, chunkedResponse: False, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: True, chunkedResponse: True, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: True, chunkedResponse: False, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: True, chunkedResponse: True, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: False, chunkedResponse: False, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: False, chunkedResponse: True, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: False, chunkedResponse: True, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: True, chunkedResponse: True, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: False, chunkedResponse: False, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: False, chunkedResponse: True, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: True, chunkedResponse: False, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: False, chunkedResponse: True, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: False, chunkedResponse: False, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: False, chunkedResponse: False, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: False, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: True, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: True, chunkedResponse: True, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: True, chunkedResponse: False, responseLength: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: False, chunkedResponse: False, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: False, chunkedResponse: False, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Unvalidated(ssl: False, chunkedResponse: True, responseLength: 100000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get_EnumerateHeaders_Validated(ssl: False, chunkedResponse: True, responseLength: 100000)

#### 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 linked benchmark source, src/benchmarks/micro/libraries/System.Net.Http/Perf.SocketsHttpHandler.cs lines 95-126, and the System.Net.Http.Tests.SocketsHttpHandlerPerfTest results for the listed ARM64 AzureLinux configurations. Compare the reported baseline and test data, then determine whether a concrete runtime change is indicated; done requires a reproducible finding and validated benchmark results.

Written by the indexing model from the issue text.

Assessment

Domain
networking, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.