Skip to content

[Perf] Regression in Perf_FileStream #49156

@DrewScoggins

Description

@DrewScoggins

Run Information

Architecture x64
OS ubuntu 18.04
Baseline d5ab93c4a8e45da2dab8924c2165000bf78f84e6
Compare cbb5b905d67a91ecf293c8807414b7791713b02d

Regressions in System.IO.Tests.Perf_FileStream

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ReadByte 7.15 μs 8.49 μs 1.19
ReadAsync 7.87 μs 8.35 μs 1.06
OpenClose 2.87 μs 3.28 μs 1.15
Read 4.44 μs 4.86 μs 1.10
ReadAsync 5.92 μs 6.30 μs 1.06
ReadAsync 6.52 μs 7.88 μs 1.21
ReadByte 6.96 μs 8.79 μs 1.26

graph
graph
graph
graph
graph
graph
graph
Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.IO.Tests.Perf_FileStream*'

.

Payloads

Baseline
Compare

Histogram

System.IO.Tests.Perf_FileStream.ReadByte(fileSize: 1024, options: None)

[6826.607 ; 7055.656) | @@@@@@@@@@@@@@@@@@@@
[7055.656 ; 7272.377) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7272.377 ; 7544.007) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7544.007 ; 7788.644) | @@@@@@@@@@@@@@@@@@@@@@@@
[7788.644 ; 7956.825) | @@@@
[7956.825 ; 8115.204) | 
[8115.204 ; 8369.989) | @@@@@@@@@
[8369.989 ; 8586.710) | @@@@@@@@@@@@
[8586.710 ; 8835.881) | @@@

System.IO.Tests.Perf_FileStream.ReadAsync(fileSize: 1024, userBufferSize: 512, options: None)

[7063.669 ; 7262.293) | @@@@@@@@
[7262.293 ; 7474.602) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7474.602 ; 7804.894) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7804.894 ; 7976.427) | @
[7976.427 ; 8188.736) | 
[8188.736 ; 8470.922) | @@@@@
[8470.922 ; 8683.231) | @@@@@@@@@@@@@@@@@
[8683.231 ; 8915.446) | @@@@

System.IO.Tests.Perf_FileStream.OpenClose(fileSize: 1024, options: None)

[2783.082 ; 2841.874) | @@@@@
[2841.874 ; 2907.343) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[2907.343 ; 2977.449) | @@@@@@@@@@@@@@
[2977.449 ; 3085.689) | @@@@@@@@@@@@@
[3085.689 ; 3151.158) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3151.158 ; 3225.832) | @@@@@@@
[3225.832 ; 3374.205) | @@@@@@@@@

System.IO.Tests.Perf_FileStream.Read(fileSize: 1024, userBufferSize: 512, options: None)

[3971.800 ; 4074.625) | @@
[4074.625 ; 4222.991) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[4222.991 ; 4382.773) | @@@@@@@
[4382.773 ; 4531.139) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[4531.139 ; 4635.424) | @@
[4635.424 ; 4795.866) | @
[4795.866 ; 4944.232) | @@@@@@@@@@@@@@@
[4944.232 ; 5087.227) | @
[5087.227 ; 5235.593) | @@@@@@@
[5235.593 ; 5343.453) | @

System.IO.Tests.Perf_FileStream.ReadAsync(fileSize: 1024, userBufferSize: 4096, options: None)

[5706.751 ; 5865.598) | @@@@@@@@@@@
[5865.598 ; 6071.241) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[6071.241 ; 6200.468) | @@@@@
[6200.468 ; 6434.972) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[6434.972 ; 6698.726) | @@@@@@

System.IO.Tests.Perf_FileStream.ReadAsync(fileSize: 1024, userBufferSize: 512, options: Asynchronous)

[6223.449 ; 6426.159) | @@@@
[6426.159 ; 6638.275) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[6638.275 ; 6788.627) | @@@@
[6788.627 ; 7000.743) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7000.743 ; 7144.171) | @@@
[7144.171 ; 7356.287) | 
[7356.287 ; 7530.518) | 
[7530.518 ; 7742.634) | @@@@@@@@@@@@@@
[7742.634 ; 8046.329) | @@@@@@@@@@@

System.IO.Tests.Perf_FileStream.ReadByte(fileSize: 1024, options: Asynchronous)

[6899.512 ; 7152.184) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7152.184 ; 7436.475) | @@@@@@@@@@@@@@@@
[7436.475 ; 7689.147) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[7689.147 ; 7955.746) | @@@@@@@@@@@@@@@@@@@@@@@
[7955.746 ; 8330.840) | @
[8330.840 ; 8583.512) | @@@@@@@@@@@@@@@@
[8583.512 ; 8833.601) | @@@@@@@@
[8833.601 ; 9057.500) | @@

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions