Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Perf] Linux/x64: Regressions in System.IO.Compression #105331

Closed
performanceautofiler bot opened this issue Jul 23, 2024 · 9 comments
Closed

[Perf] Linux/x64: Regressions in System.IO.Compression #105331

performanceautofiler bot opened this issue Jul 23, 2024 · 9 comments
Assignees
Labels
arch-x64 area-System.IO.Compression os-linux Linux OS (any supported distro) runtime-coreclr specific to the CoreCLR runtime
Milestone

Comments

@performanceautofiler
Copy link

Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue ViperUbuntu
Baseline 2b3088b99e97f0d6d3dd24dcd41ab330757f5aa2
Compare f9016e3507a9669894c500c1cdd4a45aaef24354
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.IO.Compression.ZLib

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
258.85 μs 1.16 ms 4.50 0.04 False
281.64 μs 326.49 μs 1.16 0.01 False
364.03 μs 511.00 μs 1.40 0.01 False
574.52 μs 1.61 ms 2.81 0.02 False
2.63 ms 7.14 ms 2.72 0.01 False
111.58 μs 139.90 μs 1.25 0.42 False
1.78 ms 2.36 ms 1.32 0.02 False
261.50 μs 323.78 μs 1.24 0.01 False
45.79 μs 63.59 μs 1.39 0.01 False
47.45 μs 70.89 μs 1.49 0.01 False

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

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Compression.ZLib*'

System.IO.Compression.ZLib.Compress(level: Optimal, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Decompress(level: Fastest, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Decompress(level: Fastest, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Compress(level: Fastest, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Compress(level: Optimal, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Compress(level: Fastest, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Compress(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Decompress(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Decompress(level: Optimal, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.ZLib.Decompress(level: Fastest, file: "sum")

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue ViperUbuntu
Baseline 2b3088b99e97f0d6d3dd24dcd41ab330757f5aa2
Compare f9016e3507a9669894c500c1cdd4a45aaef24354
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.IO.Compression.Gzip

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
359.47 μs 570.68 μs 1.59 0.01 False
2.70 ms 7.20 ms 2.66 0.01 False
47.40 μs 86.22 μs 1.82 0.01 False
915.09 μs 2.20 ms 2.40 0.01 False
112.26 μs 150.80 μs 1.34 0.19 False
285.22 μs 377.61 μs 1.32 0.01 False
252.01 μs 547.55 μs 2.17 0.01 False
1.79 ms 2.36 ms 1.32 0.01 False
262.29 μs 375.85 μs 1.43 0.01 False
581.96 μs 1.67 ms 2.86 0.05 False

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

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Compression.Gzip*'

System.IO.Compression.Gzip.Decompress(level: Fastest, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Compress(level: Optimal, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Decompress(level: Fastest, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Compress(level: Fastest, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Compress(level: Fastest, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Decompress(level: Fastest, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Decompress(level: Optimal, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Compress(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Decompress(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Gzip.Compress(level: Fastest, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue ViperUbuntu
Baseline 2b3088b99e97f0d6d3dd24dcd41ab330757f5aa2
Compare f9016e3507a9669894c500c1cdd4a45aaef24354
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.IO.Compression.Deflate

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
45.64 μs 51.87 μs 1.14 0.01 False
251.08 μs 438.63 μs 1.75 0.01 False
936.74 μs 2.09 ms 2.23 0.01 False
1.78 ms 2.27 ms 1.28 0.03 False
575.91 μs 1.56 ms 2.71 0.04 False
363.33 μs 460.75 μs 1.27 0.01 False
257.88 μs 1.16 ms 4.51 0.05 False
260.70 μs 287.18 μs 1.10 0.01 False
111.34 μs 124.19 μs 1.12 0.30 False
47.43 μs 57.84 μs 1.22 0.01 False

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

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Compression.Deflate*'

System.IO.Compression.Deflate.Decompress(level: Optimal, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Decompress(level: Optimal, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Compress(level: Fastest, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Compress(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Compress(level: Fastest, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Decompress(level: Fastest, file: "alice29.txt")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Compress(level: Optimal, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Decompress(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Compress(level: Fastest, file: "sum")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Deflate.Decompress(level: Fastest, file: "sum")

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue ViperUbuntu
Baseline 2b3088b99e97f0d6d3dd24dcd41ab330757f5aa2
Compare f9016e3507a9669894c500c1cdd4a45aaef24354
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.IO.Compression.Brotli

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
478.41 ms 513.99 ms 1.07 0.01 False
478.30 ms 512.86 ms 1.07 0.01 False

graph
graph
Test Report

Repro

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

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Compression.Brotli*'

System.IO.Compression.Brotli.Compress_WithoutState(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

System.IO.Compression.Brotli.Compress_WithState(level: Optimal, file: "TestDocument.pdf")

ETL Files

Histogram

JIT Disasms

Docs

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

@performanceautofiler performanceautofiler bot added arch-x64 os-linux Linux OS (any supported distro) runtime-coreclr specific to the CoreCLR runtime untriaged New issue has not been triaged by the area owner labels Jul 23, 2024
@LoopedBard3 LoopedBard3 removed the untriaged New issue has not been triaged by the area owner label Jul 23, 2024
@LoopedBard3 LoopedBard3 transferred this issue from dotnet/perf-autofiling-issues Jul 23, 2024
@dotnet-policy-service dotnet-policy-service bot added the untriaged New issue has not been triaged by the area owner label Jul 23, 2024
@LoopedBard3 LoopedBard3 changed the title [Perf] Linux/x64: 32 Regressions on 7/16/2024 9:50:36 PM [Perf] Linux/x64: System.IO.Compression Jul 23, 2024
@LoopedBard3 LoopedBard3 changed the title [Perf] Linux/x64: System.IO.Compression [Perf] Linux/x64: Regressions in System.IO.Compression Jul 23, 2024
Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-io-compression
See info in area-owners.md if you want to be subscribed.

@LoopedBard3
Copy link
Member

Other related regressions:
Linux/x64: dotnet/perf-autofiling-issues#38694

@LoopedBard3
Copy link
Member

LoopedBard3 commented Jul 23, 2024

Seems to be caused by: #104904. @carlossanlop. We are only seeing this regression on Linux.

@carlossanlop
Copy link
Member

carlossanlop commented Jul 23, 2024

I don't know what changed. I also saw the results for arm64 Linux, they're really bad and conflict with what we got in this previous report with a ton of improvements: dotnet/perf-autofiling-issues#38280

cc @jkotas @jkoritzinsky

@LoopedBard3
Copy link
Member

I don't know what changed. I also saw the results for arm64 Linux, they're really bad and conflict with what we got in this previous report with a ton of improvements: dotnet/perf-autofiling-issues#38280

cc @jkotas @jkoritzinsky

The diff for the set of these regressions, which seems to be the same time as the arm64 ones, is: 0f2e63f...bbabbc9. The commit that jumps out the most is #104904 where it seems something is causing the behavior to match pre-zlib changes behavior.

@AndyAyersMS
Copy link
Member

If you look at one of these charts you can see two improvements and two regressions back to old levels. The first regression was when the initial zlib change was reverted. The second reversion seems like an unexpected outcome from #104904

image

@carlossanlop
Copy link
Member

Yep, thanks. We confirmed it and we are working on a fix: #105352

@ericstj ericstj added this to the 9.0.0 milestone Jul 24, 2024
@dotnet-policy-service dotnet-policy-service bot removed the untriaged New issue has not been triaged by the area owner label Jul 24, 2024
@ericstj
Copy link
Member

ericstj commented Jul 24, 2024

@carlossanlop can this be resolved now that #105352 is merged?

@carlossanlop
Copy link
Member

I think so, yes. If the issue is still happening, we will get a new issue opened by the perf lab.

@github-actions github-actions bot locked and limited conversation to collaborators Aug 24, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-x64 area-System.IO.Compression os-linux Linux OS (any supported distro) runtime-coreclr specific to the CoreCLR runtime
Projects
None yet
Development

No branches or pull requests

4 participants