Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
d9ab453
New benchmarks
ardatan Sep 2, 2025
5e8407c
Go
ardatan Sep 2, 2025
b012bd3
..
ardatan Sep 2, 2025
13c5293
Make install
ardatan Sep 2, 2025
efcc34a
Wait for
ardatan Sep 2, 2025
5715da5
Maibn
ardatan Sep 2, 2025
b4115d7
Trigger
ardatan Sep 2, 2025
df41160
Only install the gw
ardatan Sep 2, 2025
4436027
Wait subgraphs just before the actual run
ardatan Sep 2, 2025
7a84c10
No need to log in to the registry
ardatan Sep 2, 2025
5b76ab5
..
ardatan Sep 2, 2025
f52dc72
More timeout
ardatan Sep 2, 2025
28591a0
..
ardatan Sep 2, 2025
2f0c771
LFG
ardatan Sep 2, 2025
01e8f78
LFG
ardatan Sep 2, 2025
0dd3c14
Run bun
ardatan Sep 2, 2025
58ce8ba
Fix bun
ardatan Sep 2, 2025
b2b5253
Trigger
ardatan Sep 2, 2025
9616fa8
Try again
ardatan Sep 2, 2025
eeb4aad
Go
ardatan Sep 2, 2025
0e531c1
No pattern just download
ardatan Sep 2, 2025
bb5b384
Lets go
ardatan Sep 2, 2025
e70a107
Try
ardatan Sep 2, 2025
08f5be0
..
ardatan Sep 2, 2025
868112d
Correct timing
ardatan Sep 2, 2025
c109d58
descriptions
ardatan Sep 2, 2025
4800190
hmm
ardatan Sep 2, 2025
2d21b95
Lets go
ardatan Sep 2, 2025
3cfbc63
No container
ardatan Sep 2, 2025
98a7fb8
Run metrics container
ardatan Sep 2, 2025
7d31e05
Hmm
ardatan Sep 2, 2025
9fec3ad
Hmm
ardatan Sep 2, 2025
f65ac3f
Lets go
ardatan Sep 3, 2025
239ec4c
Ignore containers
ardatan Sep 3, 2025
5720a88
Ignore logs
ardatan Sep 3, 2025
f7f2849
Update results for scenario: constant-vus-over-time
invalid-email-address Sep 3, 2025
35d40de
Update results for scenario: ramping-vus
invalid-email-address Sep 3, 2025
ffc601b
Update results for scenario: constant-vus-subgraphs-delay
invalid-email-address Sep 3, 2025
83b2efa
Update results for scenario: constant-vus-subgraphs-delay-resources
invalid-email-address Sep 3, 2025
8c0db1d
GO
ardatan Sep 3, 2025
8b90082
Go
ardatan Sep 3, 2025
397c551
Reduce ramping vus
ardatan Sep 3, 2025
a3e839f
Reduce ramping vus
ardatan Sep 3, 2025
cb8bbc1
lets go
ardatan Sep 3, 2025
fca71aa
CI
ardatan Sep 3, 2025
5fb22b4
Try
ardatan Sep 3, 2025
1fc8354
Update results for scenario: constant-vus-over-time
invalid-email-address Sep 3, 2025
6f82bd5
..
ardatan Sep 3, 2025
33e6703
Remove fork
ardatan Sep 3, 2025
62db7c3
Add LICENSE back
ardatan Sep 3, 2025
a22ee26
Update results for scenario: constant-vus-subgraphs-delay
invalid-email-address Sep 3, 2025
dd128fd
Limit memory
ardatan Sep 3, 2025
6e72175
Limit CPU correctly
ardatan Sep 3, 2025
2ec60a2
Update results for scenario: constant-vus-subgraphs-delay-resources
invalid-email-address Sep 3, 2025
0bb21a0
Update results for scenario: ramping-vus
invalid-email-address Sep 3, 2025
d7da980
Delay
ardatan Sep 3, 2025
0081234
..
ardatan Sep 3, 2025
e7c4a10
Print mem limit
ardatan Sep 3, 2025
06fdba2
50ms is enough
ardatan Sep 3, 2025
e701e7f
Mem limit
ardatan Sep 3, 2025
9f010df
..
ardatan Sep 3, 2025
0e786b5
Bun
ardatan Sep 3, 2025
90a7c74
..
ardatan Sep 3, 2025
ef7dd0e
..
ardatan Sep 3, 2025
4b3a2e3
Lg
ardatan Sep 3, 2025
22afea6
..
ardatan Sep 3, 2025
b9d7fcb
Lets go
ardatan Sep 3, 2025
4aa1b51
Double JIT
ardatan Sep 3, 2025
c2587bf
Lets go
ardatan Sep 3, 2025
2113408
Lets go
ardatan Sep 3, 2025
6366ae4
Lets go
ardatan Sep 3, 2025
9ed1a20
Toolkit
ardatan Sep 3, 2025
716b70a
Lets go
ardatan Sep 3, 2025
b853167
Lets go
ardatan Sep 3, 2025
f83d2db
Lets go
ardatan Sep 3, 2025
729a390
Stats json
ardatan Sep 3, 2025
9e3bc55
Lets go
ardatan Sep 3, 2025
e41c7fd
Generate report do that
ardatan Sep 3, 2025
818a269
lETS go
ardatan Sep 3, 2025
81c4649
Lets go
ardatan Sep 3, 2025
b2df1ed
..
ardatan Sep 3, 2025
fb97cde
Lets go
ardatan Sep 3, 2025
aa047ac
Lets go
ardatan Sep 3, 2025
12cdec5
Bump Hive GW
ardatan Sep 3, 2025
4ea580c
Runner
ardatan Sep 3, 2025
006a3d3
added website pipeline
dotansimha Sep 4, 2025
6031236
now with the file
dotansimha Sep 4, 2025
bd85f14
fix grafana screenshot
dotansimha Sep 4, 2025
9347942
latest hive-router, fix screenshots again
dotansimha Sep 4, 2025
4ac2961
remove mercurius, remove apollo-gateway (deprecated), no yarn
dotansimha Sep 4, 2025
6d18ca1
remove cadvisor
dotansimha Sep 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .dockerignore

This file was deleted.

87 changes: 51 additions & 36 deletions .github/workflows/benchmark.template.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
on:
workflow_call:
inputs:
baseDir:
scenarioName:
type: string
required: true
runner:
type: string
required: true
scenarioDir:
type: string
required: true
scenarioName:
mode:
type: string
required: true
gateway:
Expand All @@ -25,34 +22,49 @@ on:
cpuLimit:
type: string
required: true
fork:
type: string
required: true
memoryLimit:
type: string
required: true
subgraphDelayRange:
type: string
default: ""
subgraphDelay:
type: number
default: 0

jobs:
test:
runs-on: ${{ startsWith(inputs.runner, '{') && fromJSON(inputs.runner) || inputs.runner }}
name: ${{ inputs.gateway }}
steps:
- name: adjust os
run: |
ulimit -n 10000

- name: checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5

- name: setup rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- name: Setup K6
- uses: Swatinem/rust-cache@v2

- name: run subgraphs
run: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6=0.49.0
make run-subgraphs &
env:
SUBGRAPH_DELAY_MS: ${{ inputs.subgraphDelay }}

- uses: grafana/setup-k6-action@v1

- name: install
run: ./install.sh
working-directory: gateways/${{ inputs.gateway }}

- name: configure eqemu
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3
with:
platforms: 'linux/arm64,linux/amd64'

- name: configure docker buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3

- name: login to docker registry
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3
Expand All @@ -61,29 +73,32 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: prepare containers and run benchmark (${{ inputs.time }})
timeout-minutes: 20
working-directory: ${{ inputs.baseDir }}/scenarios/${{ inputs.scenarioDir }}
run: ./run.sh ${{ inputs.gateway }}
- name: Run Metrics Container
run: |
docker compose -f docker-compose.metrics.yaml up -d --wait --force-recreate --build

- name: wait for subgraphs
uses: iFaxity/wait-on-action@main
with:
resource: http://localhost:4200/health

- name: run benchmark (${{ inputs.time }})
timeout-minutes: 600
run: make test gateway=${{ inputs.gateway }} mode=${{ inputs.mode }}
env:
ACCOUNTS_SUBGRAPH_DELAY_MS: ${{ inputs.subgraphDelayRange }}
INVENTORY_SUBGRAPH_DELAY_MS: ${{ inputs.subgraphDelayRange }}
PRODUCTS_SUBGRAPH_DELAY_MS: ${{ inputs.subgraphDelayRange }}
REVIEWS_SUBGRAPH_DELAY_MS: ${{ inputs.subgraphDelayRange }}
DOCKER_REGISTRY: ghcr.io/${{ github.repository }}/
DOCKER_TAG: ":${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}"
BENCH_VUS: ${{ inputs.vu }}
BENCH_OVER_TIME: ${{ inputs.time }}
MEM_LIMIT: ${{ inputs.memoryLimit }}
CPU_LIMIT: ${{ inputs.cpuLimit }}
FORK: ${{ inputs.fork }}

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
if: always()
with:
name: ${{ inputs.baseDir }}_${{ inputs.scenarioName }}_${{ inputs.gateway }}
name: ${{ inputs.scenarioName }}_${{ inputs.gateway }}
path: |
${{ inputs.baseDir }}/gateways/${{ inputs.gateway }}/k6_summary.json
${{ inputs.baseDir }}/gateways/${{ inputs.gateway }}/k6_summary.txt
${{ inputs.baseDir }}/gateways/${{ inputs.gateway }}/gateway_log.txt
${{ inputs.baseDir }}/gateways/${{ inputs.gateway }}/*.png
gateways/${{ inputs.gateway }}/k6_summary.json
gateways/${{ inputs.gateway }}/k6_summary.txt
gateways/${{ inputs.gateway }}/gateway_log.txt
gateways/${{ inputs.gateway }}/*.png
gateways/${{ inputs.gateway }}/data.csv
gateways/${{ inputs.gateway }}/stats.json
52 changes: 0 additions & 52 deletions .github/workflows/docker-bake.template.yaml

This file was deleted.

60 changes: 14 additions & 46 deletions .github/workflows/federation-v1.workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,163 +8,131 @@ concurrency:
cancel-in-progress: true

jobs:
subgraphs:
uses: ./.github/workflows/docker-bake.template.yaml
with:
dir: ./federation/subgraphs
hcl: docker.hcl
target: subgraphs

decide-runner:
needs: subgraphs
uses: ./.github/workflows/decide-runner.template.yaml

constant-vus-over-time:
needs:
- decide-runner
- subgraphs
strategy:
fail-fast: false
matrix:
directory:
- apollo-server
- apollo-router
- hive-gateway
- hive-gateway-bun
- hive-router
- cosmo
- mercurius
- grafbase
uses: ./.github/workflows/benchmark.template.yaml
with:
gateway: ${{ matrix.directory }}
vu: 300
vu: 50
time: ${{ github.event_name == 'pull_request' && '30s' || '60s' }}
baseDir: federation
scenarioDir: constant-vus-over-time
scenarioName: constant-vus-over-time
runner: ${{ needs.decide-runner.outputs.runner }}
cpuLimit: 3
fork: 2
memoryLimit: 6gb
mode: constant

constant-vus-over-time-report:
needs: constant-vus-over-time
uses: ./.github/workflows/report.template.yaml
secrets: inherit
with:
scenarioName: constant-vus-over-time
baseDir: federation
scenarioDir: constant-vus-over-time

constant-vus-subgraphs-delay:
needs:
- decide-runner
- subgraphs
strategy:
fail-fast: false
matrix:
directory:
- apollo-server
- apollo-router
- hive-gateway
- hive-gateway-bun
- hive-router
- cosmo
- mercurius
- grafbase
uses: ./.github/workflows/benchmark.template.yaml
with:
gateway: ${{ matrix.directory }}
vu: 300
vu: 50
time: ${{ github.event_name == 'pull_request' && '30s' || '60s' }}
baseDir: federation
scenarioDir: constant-vus-over-time
scenarioName: constant-vus-subgraphs-delay
runner: ${{ needs.decide-runner.outputs.runner }}
cpuLimit: 3
fork: 2
memoryLimit: 6gb
subgraphDelayRange: "40~150"
subgraphDelay: 50
mode: constant

constant-vus-subgraphs-delay-report:
needs: constant-vus-subgraphs-delay
uses: ./.github/workflows/report.template.yaml
secrets: inherit
with:
scenarioName: constant-vus-subgraphs-delay
baseDir: federation
scenarioDir: constant-vus-over-time

constant-vus-subgraphs-delay-resources:
needs:
- decide-runner
- subgraphs
strategy:
fail-fast: false
matrix:
directory:
- apollo-server
- apollo-router
- hive-gateway
- hive-gateway-bun
- hive-router
- cosmo
- mercurius
- grafbase
uses: ./.github/workflows/benchmark.template.yaml
with:
gateway: ${{ matrix.directory }}
vu: 500
vu: 50
time: ${{ github.event_name == 'pull_request' && '30s' || '60s' }}
baseDir: federation
scenarioDir: constant-vus-over-time
scenarioName: constant-vus-subgraphs-delay-resources
runner: ${{ needs.decide-runner.outputs.runner }}
cpuLimit: 4
fork: 3
memoryLimit: 8gb
subgraphDelayRange: "40~150"
subgraphDelay: 50
mode: constant

constant-vus-subgraphs-delay-resources-report:
needs: constant-vus-subgraphs-delay-resources
uses: ./.github/workflows/report.template.yaml
secrets: inherit
with:
scenarioName: constant-vus-subgraphs-delay-resources
baseDir: federation
scenarioDir: constant-vus-over-time

ramping-vus:
needs:
- decide-runner
- subgraphs
strategy:
fail-fast: false
matrix:
directory:
- apollo-server
- apollo-router
- hive-gateway
- hive-gateway-bun
- hive-router
- cosmo
- mercurius
- grafbase
uses: ./.github/workflows/benchmark.template.yaml
with:
gateway: ${{ matrix.directory }}
vu: 2000
vu: 500
time: 60s
baseDir: federation
scenarioDir: ramping-vus
scenarioName: ramping-vus
runner: ${{ needs.decide-runner.outputs.runner }}
cpuLimit: 4
fork: 3
memoryLimit: 8gb
mode: stress

ramping-vus-report:
needs: ramping-vus
uses: ./.github/workflows/report.template.yaml
secrets: inherit
with:
scenarioName: ramping-vus
scenarioDir: ramping-vus
baseDir: federation
Loading
Loading