dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/arm64: 42 Improvements on 5/19/2026 5:33:16 PM +00:00

Open
#73,793 2 comments 0 reactions 0 assignees View on GitHub
ampere arch-arm64 bdn-update branch-refs/heads/main compilationmode-tiered kind-micro 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 | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [6481b41f3eb8fe7f796634ca2823c9bd62d0abbb](https://github.com/dotnet/runtime/commit/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb)
Compare | [99f87de9b1deedd54f89389ffdbddaa709d5d18e](https://github.com/dotnet/runtime/commit/99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb...99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Buffers.Tests.RentReturnArrayPoolTests<Object>

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

  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 621.45 ns | 142.65 ns | 0.23 | 0.45 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 814.97 ns | 198.88 ns | 0.24 | 0.44 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1355.16 ns | 506.66 ns | 0.37 | 0.30 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.19 μs | 2.80 μs | 0.39 | 0.35 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6.93 μs | 2.78 μs | 0.40 | 0.36 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1851.39 ns | 810.02 ns | 0.44 | 0.66 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 28.36 ns | 13.04 ns | 0.46 | 0.23 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 40.59 μs | 21.83 μs | 0.54 | 0.27 | False | | |
|
  • [SingleParallel - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 105.11 ns | 57.00 ns | 0.54 | 0.14 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 37.93 μs | 21.41 μs | 0.56 | 0.27 | False | | |
|
  • [ProducerConsumer - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6.87 μs | 6.03 μs | 0.88 | 0.55 | 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.Buffers.Tests.RentReturnArrayPoolTests*'
```

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.SingleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.SingleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.MultipleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.SingleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.SingleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.MultipleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.SingleSerial(RentalSize: 4096, ManipulateArray: False, Async: False, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.MultipleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.SingleParallel(RentalSize: 4096, ManipulateArray: False, Async: False, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.MultipleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Object>.ProducerConsumer(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: True)

#### 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 | arm64
OS | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [6481b41f3eb8fe7f796634ca2823c9bd62d0abbb](https://github.com/dotnet/runtime/commit/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb)
Compare | [99f87de9b1deedd54f89389ffdbddaa709d5d18e](https://github.com/dotnet/runtime/commit/99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb...99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Buffers.Tests.RentReturnArrayPoolTests<Byte>

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

  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 722.26 ns | 166.93 ns | 0.23 | 0.40 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 565.01 ns | 141.10 ns | 0.25 | 0.36 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1295.57 ns | 446.12 ns | 0.34 | 0.26 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1896.32 ns | 754.92 ns | 0.40 | 0.63 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 33.61 μs | 14.55 μs | 0.43 | 0.25 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.23 μs | 1.86 μs | 0.44 | 0.31 | False | | |
|
  • [MultipleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 32.65 μs | 14.40 μs | 0.44 | 0.19 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.37 μs | 1.93 μs | 0.44 | 0.27 | False | | |
|
  • [SingleSerial - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 28.37 ns | 12.77 ns | 0.45 | 0.23 | False | | |
|
  • [SingleParallel - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 106.55 ns | 57.42 ns | 0.54 | 0.16 | False | | |
|
  • [ProducerConsumer - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.60 μs | 6.19 μs | 0.81 | 0.44 | 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.Buffers.Tests.RentReturnArrayPoolTests*'
```

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.SingleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.SingleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.MultipleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.MultipleSerial(RentalSize: 4096, ManipulateArray: False, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.MultipleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.SingleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.MultipleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.SingleSerial(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: False)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.SingleSerial(RentalSize: 4096, ManipulateArray: False, Async: False, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.SingleParallel(RentalSize: 4096, ManipulateArray: False, Async: False, UseSharedPool: True)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Buffers.Tests.RentReturnArrayPoolTests<Byte>.ProducerConsumer(RentalSize: 4096, ManipulateArray: True, Async: True, UseSharedPool: True)

#### 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 | arm64
OS | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [6481b41f3eb8fe7f796634ca2823c9bd62d0abbb](https://github.com/dotnet/runtime/commit/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb)
Compare | [99f87de9b1deedd54f89389ffdbddaa709d5d18e](https://github.com/dotnet/runtime/commit/99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb...99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Threading.Tasks.ValueTaskPerfTest

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

  • [CreateAndAwait_FromYieldingAsyncMethod - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2393.81 ns | 448.27 ns | 0.19 | 0.47 | False | | |
|
  • [Await_FromResult - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 17.47 ns | 11.19 ns | 0.64 | 0.08 | False | | |
|
  • [CreateAndAwait_FromResult - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 17.34 ns | 11.15 ns | 0.64 | 0.08 | False | | |
|
  • [CreateAndAwait_FromResult_ConfigureAwait - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 17.19 ns | 11.26 ns | 0.66 | 0.09 | False | | |
|
  • [Await_FromCompletedTask - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 31.38 ns | 21.53 ns | 0.69 | 0.29 | False | | |
|
  • [CreateAndAwait_FromCompletedTask - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 19.97 ns | 14.68 ns | 0.74 | 0.14 | False | | |
|
  • [Await_FromCompletedValueTaskSource - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 46.69 ns | 37.46 ns | 0.80 | 0.24 | False | | |

![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.Threading.Tasks.ValueTaskPerfTest*'
```

### System.Threading.Tasks.ValueTaskPerfTest.CreateAndAwait_FromYieldingAsyncMethod

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Threading.Tasks.ValueTaskPerfTest.Await_FromResult

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Threading.Tasks.ValueTaskPerfTest.CreateAndAwait_FromResult

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Threading.Tasks.ValueTaskPerfTest.CreateAndAwait_FromResult_ConfigureAwait

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Threading.Tasks.ValueTaskPerfTest.Await_FromCompletedTask

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Threading.Tasks.ValueTaskPerfTest.CreateAndAwait_FromCompletedTask

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Threading.Tasks.ValueTaskPerfTest.Await_FromCompletedValueTaskSource

#### 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 | arm64
OS | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [6481b41f3eb8fe7f796634ca2823c9bd62d0abbb](https://github.com/dotnet/runtime/commit/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb)
Compare | [99f87de9b1deedd54f89389ffdbddaa709d5d18e](https://github.com/dotnet/runtime/commit/99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/6481b41f3eb8fe7f796634ca2823c9bd62d0abbb...99f87de9b1deedd54f89389ffdbddaa709d5d18e)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>

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

  • [Add_Vector - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 401.18 ns | 341.55 ns | 0.85 | 0.12 | False | | |
|
  • [Max_Vector - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 402.67 ns | 345.45 ns | 0.86 | 0.10 | False | | |
|
  • [BitwiseAnd_Vector - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 393.46 ns | 339.46 ns | 0.86 | 0.09 | False | | |

![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.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives*'
```

### System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Add_Vector(BufferLength: 3079)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 3079)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.BitwiseAnd_Vector(BufferLength: 3079)

#### 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

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.