dotnet / dotnet/perf-autofiling-issues

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

Open
#76,518 4 comments 0 reactions 0 assignees View on GitHub
arch-x64 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 | x64
OS | ubuntu 22.04
Queue | ViperUbuntu
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]()
| 11792.26 μs | 271.46 μs | 0.02 | 0.80 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 11028.33 μs | 331.87 μs | 0.03 | 0.80 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 19.12 ms | 1.70 ms | 0.09 | 0.81 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 14.02 ms | 1.68 ms | 0.12 | 0.84 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 10.57 ms | 1.50 ms | 0.14 | 0.81 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 10.65 ms | 3.38 ms | 0.32 | 0.83 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 100.68 μs | 46.67 μs | 0.46 | 0.52 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 102.50 μs | 47.99 μs | 0.47 | 0.45 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 46.99 μs | 24.37 μs | 0.52 | 0.16 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 54.30 μs | 28.23 μs | 0.52 | 0.08 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 54.49 μs | 28.79 μs | 0.53 | 0.07 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 53.61 μs | 28.39 μs | 0.53 | 0.08 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 45.94 μs | 24.37 μs | 0.53 | 0.24 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 48.69 μs | 26.02 μs | 0.53 | 0.16 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 137.32 μs | 75.07 μs | 0.55 | 0.41 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 52.38 μs | 28.88 μs | 0.55 | 0.09 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 52.43 μs | 28.91 μs | 0.55 | 0.11 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 86.98 μs | 48.67 μs | 0.56 | 0.51 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 52.24 μs | 29.40 μs | 0.56 | 0.07 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 47.24 μs | 28.28 μs | 0.60 | 0.19 | False | | |
|
  • [Get - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 48.00 μs | 29.94 μs | 0.62 | 0.13 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 46.32 μs | 30.10 μs | 0.65 | 0.14 | False | | |
|
  • [Get_EnumerateHeaders_Unvalidated - Duration of single invocation]()
  • [ADX - Test Multi Config Graph]()
| 131.26 μs | 95.74 μs | 0.73 | 0.46 | False | | |
|
  • [Get_EnumerateHeaders_Validated - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 123.40 μs | 103.36 μs | 0.84 | 0.47 | 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
python3 .\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_EnumerateHeaders_Validated(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_Unvalidated(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: 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_Validated(ssl: False, chunkedResponse: False, 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_EnumerateHeaders_Validated(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_EnumerateHeaders_Unvalidated(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(ssl: False, chunkedResponse: True, responseLength: 100000)

#### 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_EnumerateHeaders_Unvalidated(ssl: True, chunkedResponse: True, 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(ssl: True, chunkedResponse: True, responseLength: 1)

#### 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(ssl: False, 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: 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 at lines 95-126, and compare the reported baseline and comparison commits. Confirm what change explains the SocketsHttpHandler benchmark results and whether a corrective action is required; done means the performance finding has a documented disposition.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
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.