This commit is contained in:
Sebastien Ros 2020-06-30 16:44:39 -07:00
Родитель f143b149ee
Коммит 97590dfb05
10 изменённых файлов: 1412 добавлений и 7 удалений

Просмотреть файл

@ -50,10 +50,10 @@ variables:
# v2
- name: signalRJobs
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksDriver2/benchmarks.signalr.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/signalr.benchmarks.yml
- name: proxyJobs
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksDriver2/benchmarks.proxy.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/proxy.benchmarks.yml
- name: yarpJobs
value: --config https://raw.githubusercontent.com/microsoft/reverse-proxy/master/samples/BenchmarkApp/benchmarks.yml
@ -62,13 +62,13 @@ variables:
value: 28
- name: platformJobs
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksApps/Kestrel/PlatformBenchmarks/platform.benchmarks.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/platform.benchmarks.yml
- name: plaintextJobsV2
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/Benchmarks/plaintext.benchmarks.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/plaintext.benchmarks.yml
- name: databaseJobs
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/Benchmarks/database.benchmarks.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/database.benchmarks.yml
- name: jsonJobsV2
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/Benchmarks/json.benchmarks.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/json.benchmarks.yml
- name: frameworksV2
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksDriver2/te.benchmarks.yml
value: --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/te.benchmarks.yml

210
scenarios/README.md Normal file
Просмотреть файл

@ -0,0 +1,210 @@
# Benchmark Scenarios
This folder contains benchmarks that represent common scenarios to look at for the .NET team.
## Requirements
These jobs can be executed using the .NET Crank global tool.
[.NET Core 3.1](<http://dot.net>) is required to install the global tool.
Install `crank` with the following command:
```
dotnet tool install Microsoft.Crank.Controller --version "0.1.0-*" --global
```
Alternatively, update `crank` with the following command:
```
dotnet tool update Microsoft.Crank.Controller --version "0.1.0-*" --global
```
## Profiles
Each profile defines a set of machines, private IPs and ports that are used to run a benchmark.
| Profile | Arch | OS |
| :------------- | :----------: | :----------- |
| `aspnet-perf-lin` | INTEL, 12 cores | Ubuntu 18.04, Kernel 4.x |
| `aspnet-perf-win` | INTEL, 12 cores | Windows Server 2016 |
| `aspnet-citrine-lin` | INTEL, 28 cores | Ubuntu 18.04, Kernel 4.x |
| `aspnet-citrine-lin` | INTEL, 28 cores | Windows Server 2016 |
| `aspnet-citrine-arm` | ARM64, 32 cores | Ubuntu 18.04, Kernel 4.x |
| `aspnet-citrine-amd` | AMD, 48 cores | Ubuntu 18.04, Kernel 4.x |
## Plaintext benchmarks
The source code for these benchmarks is located [here](https://github.com/aspnet/Benchmarks/tree/master/src/Benchmarks).
These scenarios return a "Hello World" string and the client uses HTTP pipelining with 16 requests.
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/plaintext.benchmarks.yml --scenario plaintext --profile aspnet-perf-lin
```
### Available scenarios
- `plaintext`: Middleware implementation
- `https`: Middleware implementation, using HTTPS
- `endpoint`: Middleware implementation with Endpoint routing
- `mvc`: Controller implementation
- `connectionclose`: Middleware implementation, the connection is closed after each request. Pipelining is disabled.
## Json benchmarks
The source code for these benchmarks is located [here](https://github.com/aspnet/Benchmarks/tree/master/src/Benchmarks).
These scenarios serialize and return a `{ "message": "Hello World" }` string.
The serialization is done with `System.Text.Json`.
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/json.benchmarks.yml --scenario json --profile aspnet-perf-lin
```
### Available scenarios
- `json`: Middleware implementation
- `https`: Middleware implementation, using HTTPS
- `mvc`: Controller implementation
## Database benchmarks
The source code for these benchmarks is located [here](https://github.com/aspnet/Benchmarks/tree/master/src/Benchmarks).
These scenarios execute some database requests and return either HTML or Json.
The database server is PostgresQL.
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/database.benchmarks.yml --scenario fortunes --profile aspnet-perf-lin
```
### Available scenarios
- `fortunes`: Middleware implementation using raw ADO.NET.
- `fortunes_ef`: Middleware implementation, using EF Core.
## Platform benchmarks
The source code for these benchmarks is located [here](https://github.com/aspnet/Benchmarks/tree/master/src/BenchmarksApps/Kestrel).
These scenarios are highly optimized to provide the best performance, in detriment of extensibility and code complexity.
The database server is PostgresQL.
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/platform.benchmarks.yml --scenario fortunes --profile aspnet-perf-lin
```
### Available scenarios
- `plaintext`
- `json`
- `fortunes`
- `single_query`
- `multiple_queries`
- `updates`
## Proxy benchmarks
These scenarios are running several web proxies, including [YARP](https://github.com/microsoft/reverse-proxy).
The downstream service returns a variable size content. By default the result is 10 bytes.
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/proxy.benchmarks.yml --scenario proxy-httpclient --profile aspnet-perf-lin
```
### Available scenarios
- `proxy-yarp`
- `proxy-httpclient`
- `proxy-nginx`
- `proxy-haproxy`
- `proxy-envoy`
- `proxy-baseline`: This scenario doesn't go through a proxy
The size of the payload can be changed by adapting the path of the requested url:
```
--variable path=/?s=100
```
## Frameworks benchmarks
These scenarios measure the performance of different other frameworks
- NodeJs
- Actix (Rust)
- FastHttp (Go)
- Netty (Java)
- ULib (C++)
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/te.benchmarks.yml --scenario nodejs_plaintext --profile aspnet-perf-lin
```
### Available scenarios
- `plaintext_nodejs`
- `json_nodejs`
- `fortunes_nodejs`
- `plaintext_actix`
- `json_actix`
- `fortunes_actix`
- `plaintext_fasthttp`
- `json_fasthttp`
- `fortunes_fasthttp`
- `plaintext_ulib`
- `json_ulib`
- `fortunes_ulib`
- `plaintext_netty`
- `json_netty`
## Grpc benchmarks
These scenarios measure the performance of different Grpc server and clients implementations.
- Go
- Native (C)
- ASP.NET
### Sample
```
crank --config https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/scenarios/grpc.benchmarks.yml --scenario grpcaspnetcoreserver-grpcnetclient --profile aspnet-perf-lin
```
### Available scenarios
- `grpcaspnetcoreserver-grpcnetclient`
- `grpccoreserver-grpcnetclient`
- `grpcgoserver-grpcnetclient`
- `grpcaspnetcoreserver-grpccoreclient`
- `grpccoreserver-grpccoreclient`
- `grpcgoserver-grpccoreclient`
- `grpcaspnetcoreserver-grpcgoclient`
- `grpccoreserver-grpcgoclient`
- `grpcgoserver-grpcgoclient`
- `grpcaspnetcoreserver-h2loadclient`
- `grpccoreserver-h2loadclient`
- `grpcgoserver-h2loadclient`
## Arguments
Number of streams: `--variable streams=1`, `--variable streams=70`
Protocol: `--variable protocol=h2c`
Call types:
- Unary: `--variable scenario=unary`
- Server streaming: `--variable scenario=serverstreaming`
- Ping ping streaming: `--variable scenario=pingpongstreaming`

Просмотреть файл

@ -0,0 +1,168 @@
# Examples:
# --config plaintext.benchmarks.yml --scenario plaintext --profile aspnet-physical
# --config benchmarks.compose.yml --scenario fortunes --profile aspnet-physical
imports:
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/WrkClient/wrk.yml
jobs:
aspnetbenchmarks:
source:
repository: https://github.com/aspnet/benchmarks.git
branchOrCommit: master
project: src/Benchmarks/Benchmarks.csproj
readyStateText: Application started.
variables:
server: Kestrel
transport: Sockets
serverScheme: http
arguments: "--nonInteractive true --scenarios {{scenario}} --server-urls {{serverScheme}}://{{serverAddress}}:{{serverPort}} --server {{server}} --kestrelTransport {{transport}} --protocol {{protocol}}"
environmentVariables:
database: PostgresQL
connectionString: Server={{databaseServer}};Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=256;NoResetOnClose=true;Enlist=false;Max Auto Prepare=4
postgresql:
source:
repository: https://github.com/TechEmpower/FrameworkBenchmarks.git
branchOrCommit: master
dockerFile: toolset/databases/postgres/postgres.dockerfile
dockerImageName: postgres_te
dockerContextDirectory: toolset/databases/postgres
readyStateText: ready to accept connections
noClean: true
scenarios:
fortunes:
db:
job: postgresql
application:
job: aspnetbenchmarks
variables:
scenario: DbFortunesRaw
load:
job: wrk
variables:
presetHeaders: html
path: /fortunes/raw
fortunes_ef:
db:
job: postgresql
application:
job: aspnetbenchmarks
variables:
scenario: DbFortunesEf
load:
job: wrk
variables:
presetHeaders: html
path: /fortunes/ef
profiles:
aspnet-citrine-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 28
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-citrine-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.104
cores: 28
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-win:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-arm:
variables:
serverPort: 5000
serverAddress: 10.0.0.107
cores: 32
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-arm:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-amd:
variables:
serverPort: 5000
serverAddress: 10.0.0.106
cores: 48
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-amd:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-perf-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001
aspnet-perf-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-win:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001

Просмотреть файл

@ -0,0 +1,152 @@
# Examples:
# --config benchmarks.grpc.yml --scenario grpcaspnetcoreserver-grpcnetclient --profile aspnet-physical-lin --variable scenario=unary --variable streams=70
imports:
- https://raw.githubusercontent.com/grpc/grpc-dotnet/master/perf/benchmarkapps/GrpcClient/grpc-client.yml
- https://raw.githubusercontent.com/grpc/grpc-dotnet/master/perf/benchmarkapps/GrpcAspNetCoreServer/grpc-aspnetcore-server.yml
- https://raw.githubusercontent.com/grpc/grpc-dotnet/master/perf/benchmarkapps/GrpcCoreServer/grpc-core-server.yml
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksApps/Grpc/GoServer/grpc-go-server.yml
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksApps/Grpc/GoClient/grpc-go-client.yml
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/H2LoadClient/h2load.yml
variables:
serverPort: 5000
scenarios:
grpcaspnetcoreserver-grpcnetclient:
application:
job: grpcAspNetCoreServer
load:
job: grpcDotNetClient
variables:
grpcClientType: grpcnetclient
grpccoreserver-grpcnetclient:
application:
job: grpcCoreServer
load:
job: grpcDotNetClient
variables:
grpcClientType: grpcnetclient
grpcgoserver-grpcnetclient:
application:
job: grpcGoServer
load:
job: grpcDotNetClient
variables:
grpcClientType: grpcnetclient
grpcaspnetcoreserver-grpccoreclient:
application:
job: grpcAspNetCoreServer
load:
job: grpcDotNetClient
variables:
grpcClientType: grpccore
grpccoreserver-grpccoreclient:
application:
job: grpcCoreServer
load:
job: grpcDotNetClient
variables:
grpcClientType: grpccore
grpcgoserver-grpccoreclient:
application:
job: grpcGoServer
load:
job: grpcDotNetClient
variables:
grpcClientType: grpccore
grpcaspnetcoreserver-grpcgoclient:
application:
job: grpcAspNetCoreServer
load:
job: grpcGoClient
grpccoreserver-grpcgoclient:
application:
job: grpcCoreServer
load:
job: grpcGoClient
grpcgoserver-grpcgoclient:
application:
job: grpcGoServer
load:
job: grpcGoClient
grpcaspnetcoreserver-h2loadclient:
application:
job: grpcAspNetCoreServer
load:
job: h2LoadClient
variables:
presetHeaders: grpc
grpccoreserver-h2loadclient:
application:
job: grpcCoreServer
load:
job: h2LoadClient
variables:
presetHeaders: grpc
grpcgoserver-h2loadclient:
application:
job: grpcGoServer
load:
job: h2LoadClient
variables:
presetHeaders: grpc
profiles:
aspnet-physical-lin:
variables:
serverUri: http://10.0.0.102
cores: 12
jobs:
application:
endpoints:
- http://asp-perf-lin:5001
warmup:
endpoints:
- http://asp-perf-load:5001
load:
endpoints:
- http://asp-perf-load:5001
aspnet-physical-win:
variables:
serverUri: http://10.0.0.110
cores: 12
jobs:
application:
endpoints:
- http://asp-perf-win:5001
warmup:
endpoints:
- http://asp-perf-load:5001
load:
endpoints:
- http://asp-perf-load:5001
aspnet-citrine-lin:
variables:
serverUri: http://10.0.0.102
cores: 28
jobs:
application:
endpoints:
- http://asp-citrine-lin:5001
warmup:
endpoints:
- http://asp-citrine-load:5001
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-win:
variables:
serverUri: http://10.0.0.104
cores: 28
jobs:
application:
endpoints:
- http://asp-citrine-win:5001
warmup:
endpoints:
- http://asp-citrine-load:5001
load:
endpoints:
- http://asp-citrine-load:5001

Просмотреть файл

@ -0,0 +1,186 @@
# Examples:
# --config plaintext.benchmarks.yml --scenario plaintext --profile aspnet-physical
# --config benchmarks.compose.yml --scenario fortunes --profile aspnet-physical
imports:
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/WrkClient/wrk.yml
jobs:
aspnetbenchmarks:
source:
repository: https://github.com/aspnet/benchmarks.git
branchOrCommit: master
project: src/Benchmarks/Benchmarks.csproj
readyStateText: Application started.
variables:
presetHeaders: json
protocol: http
serverScheme: http
serverPort: 5000
server: Kestrel
transport: Sockets
scenario: plaintext
database: ''
arguments: "--nonInteractive true --scenarios {{scenario}} --urls {{serverScheme}}://{{serverAddress}}:{{serverPort}} --server {{server}} --kestrelTransport {{transport}} --protocol {{protocol}} {% if database.size > 0 %} --database {{ database }} {% endif %}"
scenarios:
json:
application:
job: aspnetbenchmarks
variables:
scenario: json
load:
job: wrk
variables:
path: /json
https:
application:
job: aspnetbenchmarks
variables:
scenario: json
serverScheme: https
protocol: https
load:
job: wrk
variables:
path: /json
serverScheme: https
mvc:
application:
job: aspnetbenchmarks
variables:
scenario: jsonmvc
load:
job: wrk
variables:
path: /mvc/json
aspnet-citrine-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 28
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-citrine-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-citrine-load:5001
profiles:
aspnet-citrine-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 28
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-citrine-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.104
cores: 28
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-win:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-arm:
variables:
serverPort: 5000
serverAddress: 10.0.0.107
cores: 32
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-arm:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-amd:
variables:
serverPort: 5000
serverAddress: 10.0.0.106
cores: 48
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-amd:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-perf-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001
aspnet-perf-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-win:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001

Просмотреть файл

@ -0,0 +1,193 @@
# Examples:
# --config plaintext.benchmarks.yml --scenario plaintext --profile aspnet-physical
# --config benchmarks.compose.yml --scenario fortunes --profile aspnet-physical
imports:
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/WrkClient/wrk.yml
jobs:
aspnetbenchmarks:
source:
repository: https://github.com/aspnet/benchmarks.git
branchOrCommit: master
project: src/Benchmarks/Benchmarks.csproj
readyStateText: Application started.
variables:
presetHeaders: plaintext
serverPort: 5000
protocol: http
serverScheme: http
server: Kestrel
transport: Sockets
scenario: plaintext
database: ''
arguments: "--nonInteractive true --scenarios {{scenario}} --server-urls {{serverScheme}}://{{serverAddress}}:{{serverPort}} --server {{server}} --kestrelTransport {{transport}} --protocol {{protocol}} {% if database.size > 0 %} --database {{ database }} {% endif %}"
scenarios:
plaintext:
application:
job: aspnetbenchmarks
variables:
scenario: plaintext
load:
job: wrk
variables:
path: /plaintext
pipeline: 16
https:
application:
job: aspnetbenchmarks
variables:
scenario: plaintext
protocol: https
serverScheme: https
load:
job: wrk
variables:
path: /plaintext
pipeline: 16
serverScheme: https
endpoint:
application:
job: aspnetbenchmarks
variables:
scenario: EndpointPlaintext
load:
job: wrk
variables:
path: /ep-plaintext
pipeline: 16
mvc:
application:
job: aspnetbenchmarks
variables:
scenario: MvcPlaintext
load:
job: wrk
variables:
path: /mvc/plaintext
pipeline: 16
connectionclose:
application:
job: aspnetbenchmarks
variables:
scenario: Plaintext
load:
job: wrk
variables:
path: /plaintext
pipeline: 0
presetHeaders: connectionclose
profiles:
aspnet-citrine-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 28
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-citrine-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.104
cores: 28
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-win:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-arm:
variables:
serverPort: 5000
serverAddress: 10.0.0.107
cores: 32
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-arm:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-amd:
variables:
serverPort: 5000
serverAddress: 10.0.0.106
cores: 48
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-amd:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-perf-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001
aspnet-perf-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-win:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001

Просмотреть файл

@ -0,0 +1,221 @@
# Examples:
# --config platform.benchmarks.yml --scenario json --profile aspnet-citrine-lin
imports:
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/WrkClient/wrk.yml
jobs:
platformbenchmarks:
source:
repository: https://github.com/aspnet/benchmarks.git
branchOrCommit: master
project: src/BenchmarksApps/Kestrel/PlatformBenchmarks/PlatformBenchmarks.csproj
readyStateText: Application started.
framework: net5.0
postgresql:
source:
repository: https://github.com/TechEmpower/FrameworkBenchmarks.git
branchOrCommit: master
dockerFile: toolset/databases/postgres/postgres.dockerfile
dockerImageName: postgres_te
dockerContextDirectory: toolset/databases/postgres
readyStateText: ready to accept connections
noClean: true
scenarios:
plaintext:
application:
job: platformbenchmarks
load:
job: wrk
variables:
presetHeaders: plaintext
path: /p
serverPort: 5000
pipeline: 16
json:
application:
job: platformbenchmarks
load:
job: wrk
variables:
presetHeaders: json
path: /j
serverPort: 5000
connections: 512
fortunes:
db:
job: postgresql
application:
job: platformbenchmarks
buildArguments:
- "/p:IsDatabase=true"
environmentVariables:
database: PostgreSQL
connectionstring: Server={{databaseServer}};Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=256;Enlist=false;Max Auto Prepare=4;Multiplexing=true;Write Coalescing Delay Us=500;Write Coalescing Buffer Threshold Bytes=1000
load:
job: wrk
variables:
presetHeaders: html
path: /fortunes
connections: 512
single_query:
db:
job: postgresql
application:
job: platformbenchmarks
buildArguments:
- "/p:IsDatabase=true"
environmentVariables:
database: PostgreSQL
connectionstring: Server={{databaseServer}};Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=256;Enlist=false;Max Auto Prepare=4;Multiplexing=true;Write Coalescing Delay Us=500;Write Coalescing Buffer Threshold Bytes=1000
load:
job: wrk
variables:
presetHeaders: json
path: /db
multiple_queries:
db:
job: postgresql
application:
job: platformbenchmarks
buildArguments:
- "/p:IsDatabase=true"
environmentVariables:
database: PostgreSQL
connectionstring: Server={{databaseServer}};Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=256;NoResetOnClose=true;Enlist=false;Max Auto Prepare=4
load:
job: wrk
variables:
presetHeaders: json
path: /queries/queries=20
updates:
db:
job: postgresql
application:
job: platformbenchmarks
buildArguments:
- "/p:IsDatabase=true"
environmentVariables:
database: PostgreSQL
connectionString: Server={{databaseServer}};Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=256;NoResetOnClose=true;Enlist=false;Max Auto Prepare=4
load:
job: wrk
variables:
presetHeaders: json
path: /updates/queries=20
profiles:
aspnet-citrine-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 28
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-lin:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.104
cores: 28
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-win:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-arm:
variables:
serverPort: 5000
serverAddress: 10.0.0.107
cores: 32
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-arm:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-amd:
variables:
serverPort: 5000
serverAddress: 10.0.0.106
cores: 48
jobs:
db:
endpoints:
- http://asp-citrine-amd:5001
application:
endpoints:
- http://asp-citrine-amd:5001
variables:
databaseServer: 10.0.0.106
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-perf-lin:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-lin:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001
aspnet-perf-win:
variables:
serverPort: 5000
serverAddress: 10.0.0.102
cores: 12
jobs:
db:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-win:5001
variables:
databaseServer: 10.0.0.103
load:
endpoints:
- http://asp-perf-load:5001

Просмотреть файл

@ -0,0 +1,182 @@
# Examples:
# --config benchmarks.proxy.yml --scenario proxy-httpclient --profile aspnet-physical
# --config benchmarks.proxy.yml --scenario proxy-nginx --profile aspnet-physical
# --config benchmarks.proxy.yml --scenario proxy-haproxy --profile aspnet-physical
# --config benchmarks.proxy.yml --scenario proxy-envoy --profile aspnet-physical
imports:
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/Wrk2Client/wrk2.yml
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BombardierClient/bombardier.yml
variables:
path: /
jobs:
httpclientproxy:
source:
repository: https://github.com/aspnet/benchmarks.git
branchOrCommit: master
project: src/BenchmarksApps/HttpClient/Proxy/Proxy.csproj
readyStateText: Application started.
arguments: '--baseUri {{downstreamUri}}'
port: 5000
nginxproxy:
source:
Repository: https://github.com/aspnet/benchmarks.git
BranchOrCommit: master
DockerFile: docker/nginx/nginx.dockerfile
DockerImageName: nginx-reverseproxy
DockerContextDirectory: docker/nginx
environmentVariables:
PROXY_PASS : '{{downstreamAddress}}:{{downstreamPort}}'
WORKER_PROCESSES: '{{cores}}'
port: 8080
envoyproxy:
source:
Repository: https://github.com/aspnet/benchmarks.git
BranchOrCommit: master
DockerFile: docker/envoy/envoy.dockerfile
DockerImageName: envoy-reverseproxy
DockerContextDirectory: docker/envoy
readyStateText: starting workers
environmentVariables:
DOWNSTREAM_ADDRESS: '{{downstreamAddress}}'
DOWNSTREAM_PORT: '{{downstreamPort}}'
port: 8080
haproxyproxy:
source:
Repository: https://github.com/aspnet/benchmarks.git
BranchOrCommit: master
DockerFile: docker/haproxy/haproxy.dockerfile
DockerImageName: haproxy-reverseproxy
DockerContextDirectory: docker/haproxy
port: 8080
downstream:
source:
repository: https://github.com/aspnet/benchmarks.git
branchOrCommit: master
project: src/Downstream/Downstream.csproj
readyStateText: Application started.
variables:
downstreamPort: 5000
arguments: '--urls http://*:{{downstreamPort}}'
port: 5000
yarp:
source:
repository: https://github.com/microsoft/reverse-proxy.git
branchOrCommit: master
project: samples/BenchmarkApp/BenchmarkApp.csproj
readyStateText: Application started.
arguments: '--urls {{serverUri}}:{{serverPort}} --clusterUrls {{downstreamUri}}'
port: 5000
scenarios:
proxy-httpclient:
downstream:
job: downstream
application: # custom name for a service to deploy
job: httpclientproxy
load:
job: bombardier
variables:
serverPort: 5000
path: /
proxy-nginx:
downstream:
job: downstream
application:
job: nginxproxy
load:
job: bombardier
variables:
serverPort: 8080
proxy-haproxy:
downstream:
job: downstream
application:
job: haproxyproxy
load:
job: bombardier
variables:
serverPort: 8080
proxy-baseline:
application:
job: downstream
load:
job: bombardier
variables:
serverPort: 5000
proxy-envoy:
downstream:
job: downstream
application:
job: envoyproxy
load:
job: bombardier
variables:
serverPort: 8080
proxy-yarp:
downstream:
job: downstream
application:
job: yarp
load:
job: bombardier
variables:
serverPort: 5000
profiles:
aspnet-physical:
variables:
serverUri: http://10.0.0.102
downstreamUri: http://10.0.0.103:5000
downstreamAddress: 10.0.0.103
downstreamPort: 5000
cores: 12
jobs:
downstream:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-lin:5001
load:
endpoints:
- http://asp-perf-load:5001
options:
displayOutput: true
aspnet-physical-win:
variables:
serverUri: http://10.0.0.110
downstreamUri: http://10.0.0.103:5000
downstreamAddress: 10.0.0.103
downstreamPort: 5000
cores: 12
jobs:
downstream:
endpoints:
- http://asp-perf-db:5001
application:
endpoints:
- http://asp-perf-win:5001
load:
endpoints:
- http://asp-perf-load:5001
options:
aspnet-citrine:
variables:
serverUri: http://10.0.0.102
downstreamUri: http://10.0.0.103:5000
downstreamAddress: 10.0.0.103
downstreamPort: 5000
cores: 28
jobs:
downstream:
endpoints:
- http://asp-citrine-db:6001
application:
endpoints:
- http://asp-citrine-lin:5001
load:
endpoints:
- http://asp-citrine-load:5001

Просмотреть файл

@ -0,0 +1,93 @@
# Examples:
# --config benchmarks.signalr.yml --scenario signalr --variable scenario=broadcast --variable protocol=messagepack --variable transport=LongPolling --profile asp-physical-lin
imports:
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/SignalRClient/signalrclient.yml
- https://raw.githubusercontent.com/aspnet/Benchmarks/master/src/BenchmarksApps/SignalR/signalrServer.yml
variables:
serverPort: 5000
scenarios:
signalr:
application:
job: signalrServer
warmup:
job: signalrClient
variables:
path: /echo
load:
job: signalrClient
variables:
path: /echo
profiles:
aspnet-physical-lin:
variables:
serverUri: http://10.0.0.102
cores: 12
jobs:
application:
endpoints:
- http://asp-perf-lin:5001
warmup:
endpoints:
- http://asp-perf-load:5001
load:
endpoints:
- http://asp-perf-load:5001
aspnet-physical-win:
variables:
serverUri: http://10.0.0.102
cores: 12
jobs:
application:
endpoints:
- http://asp-perf-win:5001
warmup:
endpoints:
- http://asp-perf-load:5001
load:
endpoints:
- http://asp-perf-load:5001
aspnet-citrine-lin:
variables:
serverUri: http://10.0.0.102
cores: 28
jobs:
application:
endpoints:
- http://asp-citrine-lin:5001
warmup:
endpoints:
- http://asp-citrine-load:5001
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-citrine-win:
variables:
serverUri: http://10.0.0.104
cores: 28
jobs:
application:
endpoints:
- http://asp-citrine-win:5001
warmup:
endpoints:
- http://asp-citrine-load:5001
load:
endpoints:
- http://asp-citrine-load:5001
aspnet-cloud-lin:
varaibles:
serverUri: http://10.0.0.104
jobs:
application:
endpoints:
- http://10.0.0.9:5001
warmup:
endpoints:
- http://10.0.0.10:5002
load:
endpoints:
- http://10.0.0.10:5002

Просмотреть файл