Skip to content

HTTP/3 connection or stream shutdown is slow #77139

@BrennanConroy

Description

@BrennanConroy

Description

gRPC HTTP/3 benchmark performance drastically decreased. It looks like something with stream/connection shutdown is taking forever, which affects RPS calculation. (And slow shutdown doesn't seem like a good thing regardless of RPS calculations)

Configuration

Linux citrine perf machine, crank commands below

Regression?

Yes, something in the following changes caused HTTP/3 gRPC tests to be really slow (shutdown takes forever which causes the RPS calculation to be longer)
b7fca07...1cb2f42

Data

Changing only the runtime version used by the client shows a difference in RPS.

Before the changes:

~3.8m RPS

crank command
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/main/build/ci.profile.yml --config https://raw.githubusercontent.com/aspnet/Benchmarks/main/scenarios/grpc.benchmarks.yml --scenario grpcaspnetcoreserver-grpcnetclient --profile intel-lin-app --profile intel-load-load --variable scenario=serverstreaming --variable requestSize=0 --variable responseSize=0 --variable streams=70 --variable connections=20 --variable threads=20 --variable protocol=h3 --application.framework net7.0 --load.framework net7.0 --application.options.collectCounters true --load.runtimeVersion 7.0.0-preview.7.22362.12

After the changes:

~300k RPS

crank command
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/main/build/ci.profile.yml --config https://raw.githubusercontent.com/aspnet/Benchmarks/main/scenarios/grpc.benchmarks.yml --scenario grpcaspnetcoreserver-grpcnetclient --profile intel-lin-app --profile intel-load-load --variable scenario=serverstreaming --variable requestSize=0 --variable responseSize=0 --variable streams=70 --variable connections=20 --variable threads=20 --variable protocol=h3 --application.framework net7.0 --load.framework net7.0 --application.options.collectCounters true --load.runtimeVersion 7.0.0-rc.1.22363.10

Analysis

I narrowed down the changes in runtime to b7fca07...1cb2f42 which contains some Quic API changes that may be involved in the regression.

Metadata

Metadata

Assignees

Labels

area-System.Net.Quicin-prThere is an active PR which will close this issue when it is mergedtenet-performancePerformance related issue

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions