From c8a753216cafb4714d863e024f044e4115793ac8 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:01:15 +0100 Subject: [PATCH 01/19] feat: integrate bench runner --- .github/workflows/bench.yml | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index dc90be0ee65..5cba4f401ae 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -32,8 +32,12 @@ jobs: setup: needs: [optimize-ci] - if: needs.optimize-ci.outputs.skip == 'false' - runs-on: ubuntu-24.04 + if: | + needs.optimize-ci.outputs.skip == 'false' && ( + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name == github.repository + ) + runs-on: [self-hosted, bench-lg] permissions: id-token: write outputs: @@ -75,8 +79,12 @@ jobs: strategy: matrix: ${{ fromJSON(needs.setup.outputs.unit) }} fail-fast: false - if: needs.setup.outputs.unit != '{"name":[],"include":[]}' - runs-on: ubuntu-24.04 + if: | + needs.setup.outputs.unit != '{"name":[],"include":[]}' && ( + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name == github.repository + ) + runs-on: [self-hosted, bench-lg] steps: - name: Checkout base branch if: github.event_name == 'pull_request' @@ -196,8 +204,12 @@ jobs: fail-fast: false env: HASH_GRAPH_PG_DATABASE: graph - if: needs.setup.outputs.integration != '{"name":[],"include":[]}' - runs-on: ubuntu-24.04 + if: | + needs.setup.outputs.integration != '{"name":[],"include":[]}' && ( + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name == github.repository + ) + runs-on: [self-hosted, bench-lg] steps: - name: Checkout base branch if: github.event_name == 'pull_request' @@ -400,8 +412,14 @@ jobs: passed: name: Benches passed needs: [setup, unit-benches, integration-benches, optimize-ci] - if: always() && needs.optimize-ci.outputs.skip == 'false' - runs-on: ubuntu-latest + if: | + always() && + needs.optimize-ci.outputs.skip == 'false' && + ( + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name == github.repository + ) + runs-on: ubuntu-24.04 permissions: pull-requests: write steps: From 32f7273476025c35c2fd3e05ca773962bb7aedfb Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:16:56 +0100 Subject: [PATCH 02/19] fix: no longer clean up disk --- .github/workflows/bench.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 5cba4f401ae..270f89306d7 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -92,10 +92,6 @@ jobs: with: ref: ${{ github.event.pull_request.base.sha }} - - name: Clean up disk - if: github.event_name == 'pull_request' - uses: ./.github/actions/clean-up-disk - - name: Install tools if: github.event_name == 'pull_request' uses: ./.github/actions/install-tools @@ -133,10 +129,6 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - name: Clean up disk - if: github.event_name != 'pull_request' - uses: ./.github/actions/clean-up-disk - - name: Install tools uses: ./.github/actions/install-tools with: From 9ffc0c5cef50705a329b9895c4091b7d189374e7 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:18:49 +0100 Subject: [PATCH 03/19] chore: remove more cleanup --- .github/workflows/bench.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 270f89306d7..902421ae68f 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -209,10 +209,6 @@ jobs: with: ref: ${{ github.event.pull_request.base.sha }} - - name: Clean up disk - if: github.event_name == 'pull_request' - uses: ./.github/actions/clean-up-disk - - name: Install tools if: github.event_name == 'pull_request' uses: ./.github/actions/install-tools @@ -292,10 +288,6 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - name: Clean up disk - if: github.event_name != 'pull_request' - uses: ./.github/actions/clean-up-disk - - name: Install tools uses: ./.github/actions/install-tools with: From fcf85249fe88b446c703c2680685c2459f7542d0 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:20:46 +0100 Subject: [PATCH 04/19] chore: only cache deps if not self-hosted --- .github/actions/install-tools/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/install-tools/action.yml b/.github/actions/install-tools/action.yml index be487309d2c..41ba5d1acda 100644 --- a/.github/actions/install-tools/action.yml +++ b/.github/actions/install-tools/action.yml @@ -23,6 +23,7 @@ runs: uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: install_args: --env ci --jobs 1 + cache: ${{ runner.environment != 'self-hosted' }} env: MISE_VERBOSE: 1 GITHUB_TOKEN: ${{ inputs.token }} From cef80bad2d1f2ebfb8e932760f5cf6855153cfef Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:25:07 +0100 Subject: [PATCH 05/19] chore: trigger CI --- .github/workflows/bench.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 902421ae68f..cfeaf9f97f9 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -403,6 +403,7 @@ jobs: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository ) + runs-on: ubuntu-24.04 permissions: pull-requests: write From 4ce64513f3ba9f98871fb41f8da05a83846b7ff1 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:28:47 +0100 Subject: [PATCH 06/19] chore: trigger CI --- .github/workflows/bench.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index cfeaf9f97f9..902421ae68f 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -403,7 +403,6 @@ jobs: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository ) - runs-on: ubuntu-24.04 permissions: pull-requests: write From 5cd5b26629362ec46c567b2fdde91596326c9e17 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:35:30 +0100 Subject: [PATCH 07/19] chore: trigger CI --- .github/workflows/bench.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 902421ae68f..cfeaf9f97f9 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -403,6 +403,7 @@ jobs: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository ) + runs-on: ubuntu-24.04 permissions: pull-requests: write From 6feff208bb4b6b61aa9325fa829107f0ff2dbd08 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 13:38:51 +0100 Subject: [PATCH 08/19] chore: trigger CI --- .github/workflows/bench.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index cfeaf9f97f9..902421ae68f 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -403,7 +403,6 @@ jobs: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository ) - runs-on: ubuntu-24.04 permissions: pull-requests: write From 72bb54d45ab6eedba5fe7958b406ebed4a19cbc9 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 15:21:37 +0100 Subject: [PATCH 09/19] chore: trigger CI --- .github/workflows/bench.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 902421ae68f..716f1650e8c 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -410,6 +410,7 @@ jobs: - name: Check setup script run: | [[ ${{ needs.setup.result }} = success ]] + - name: Check unit benches run: | [[ ${{ needs.unit-benches.result }} =~ success|skipped ]] From 70599a089888e473b0bcc2ffc923485d17470190 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 15:25:19 +0100 Subject: [PATCH 10/19] chore: trigger CI --- .github/workflows/bench.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 716f1650e8c..902421ae68f 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -410,7 +410,6 @@ jobs: - name: Check setup script run: | [[ ${{ needs.setup.result }} = success ]] - - name: Check unit benches run: | [[ ${{ needs.unit-benches.result }} =~ success|skipped ]] From d0521c6a52dc051a328ecc2c41070d70ea108e1a Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 16:23:23 +0100 Subject: [PATCH 11/19] chore: trigger CI --- .github/workflows/bench.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 902421ae68f..716f1650e8c 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -410,6 +410,7 @@ jobs: - name: Check setup script run: | [[ ${{ needs.setup.result }} = success ]] + - name: Check unit benches run: | [[ ${{ needs.unit-benches.result }} =~ success|skipped ]] From ca61d814e9a8ea3b660360ec0435e50d78c637c9 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 16:54:17 +0100 Subject: [PATCH 12/19] chore: trigger CI --- .github/workflows/bench.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 716f1650e8c..902421ae68f 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -410,7 +410,6 @@ jobs: - name: Check setup script run: | [[ ${{ needs.setup.result }} = success ]] - - name: Check unit benches run: | [[ ${{ needs.unit-benches.result }} =~ success|skipped ]] From 62b47c3cf87dbfec21b687967e113de66e63aa35 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 18:18:27 +0100 Subject: [PATCH 13/19] chore: always tear down external services --- .github/workflows/bench.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 902421ae68f..55bf061e2f0 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -385,6 +385,14 @@ jobs: if: ${{ success() || failure() }} run: yarn workspace @apps/hash-external-services deploy logs --timestamps + - name: Tear down external services + if: ${{ success() || failure() }} + run: yarn workspace @apps/hash-external-services deploy:test down + + - name: Remove log files + if: ${{ success() || failure() }} + run: rm -rf var/logs + - name: Upload background tasks logs uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: success() || failure() From 0ee71032b47e027fb440d54ea3acb2c38587e3fc Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 18:29:28 +0100 Subject: [PATCH 14/19] feat: tune postgres --- .github/workflows/bench.yml | 36 ++++++++++++++++--- .../docker-compose.test.yml | 7 +++- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 55bf061e2f0..92980a9d232 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -240,6 +240,20 @@ jobs: echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local cp .env.local .env.test.local + + # Tune Postgres for benchmarks + cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' + # Benchmark optimizations + shared_buffers = 4GB + effective_cache_size = 12GB + work_mem = 256MB + maintenance_work_mem = 1GB + wal_buffers = 64MB + random_page_cost = 1.1 + effective_io_concurrency = 200 + synchronous_commit = off + EOF + yarn external-services:test up --wait - name: Start background tasks @@ -316,6 +330,20 @@ jobs: echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local cp .env.local .env.test.local + + # Tune Postgres for benchmarks + cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' + # Benchmark optimizations + shared_buffers = 4GB + effective_cache_size = 12GB + work_mem = 256MB + maintenance_work_mem = 1GB + wal_buffers = 64MB + random_page_cost = 1.1 + effective_io_concurrency = 200 + synchronous_commit = off + EOF + yarn external-services:test up --wait - name: Start background tasks @@ -389,10 +417,6 @@ jobs: if: ${{ success() || failure() }} run: yarn workspace @apps/hash-external-services deploy:test down - - name: Remove log files - if: ${{ success() || failure() }} - run: rm -rf var/logs - - name: Upload background tasks logs uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: success() || failure() @@ -401,6 +425,10 @@ jobs: path: | var/logs + - name: Remove log files + if: ${{ success() || failure() }} + run: rm -rf var/logs + passed: name: Benches passed needs: [setup, unit-benches, integration-benches, optimize-ci] diff --git a/apps/hash-external-services/docker-compose.test.yml b/apps/hash-external-services/docker-compose.test.yml index 4217d6a8dc9..2912b502b41 100644 --- a/apps/hash-external-services/docker-compose.test.yml +++ b/apps/hash-external-services/docker-compose.test.yml @@ -1,5 +1,6 @@ services: postgres: + shm_size: 4GB ports: - "${POSTGRES_PORT}:5432" @@ -48,7 +49,11 @@ services: condition: on-failure healthcheck: # Port 14269 is the Jaeger admin endpoint - test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:14269 || exit 1" ] + test: + [ + "CMD-SHELL", + "wget --no-verbose --tries=1 --spider http://localhost:14269 || exit 1", + ] interval: 2s timeout: 2s retries: 10 From 710264b509361cc7ecaab62837cfdc05012cbf7d Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 18:30:42 +0100 Subject: [PATCH 15/19] fix: decrease effective cache size --- .github/workflows/bench.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 92980a9d232..df675f67e06 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -245,7 +245,7 @@ jobs: cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' # Benchmark optimizations shared_buffers = 4GB - effective_cache_size = 12GB + effective_cache_size = 8GB work_mem = 256MB maintenance_work_mem = 1GB wal_buffers = 64MB @@ -335,7 +335,7 @@ jobs: cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' # Benchmark optimizations shared_buffers = 4GB - effective_cache_size = 12GB + effective_cache_size = 8GB work_mem = 256MB maintenance_work_mem = 1GB wal_buffers = 64MB From 6230ed87dd84fb3565f1f5a36606ff2f76bf799d Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 18:31:50 +0100 Subject: [PATCH 16/19] chore: formatting --- .github/workflows/bench.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index df675f67e06..6e676a7ae6c 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -238,7 +238,6 @@ jobs: touch .env.local echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local - cp .env.local .env.test.local # Tune Postgres for benchmarks @@ -328,7 +327,6 @@ jobs: touch .env.local echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local - cp .env.local .env.test.local # Tune Postgres for benchmarks From dc5e7038613af46b7ed3ab34bd2136ead0bf4374 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 19:00:44 +0100 Subject: [PATCH 17/19] feat: move bench config out of CI --- .github/workflows/bench.yml | 30 ++----------------- .../docker-compose.bench.yml | 6 ++++ .../docker-compose.test.yml | 1 - apps/hash-external-services/package.json | 1 + .../postgres/postgresql.bench.conf | 14 +++++++++ package.json | 1 + 6 files changed, 24 insertions(+), 29 deletions(-) create mode 100644 apps/hash-external-services/docker-compose.bench.yml create mode 100644 apps/hash-external-services/postgres/postgresql.bench.conf diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 6e676a7ae6c..7a01abd6c71 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -240,20 +240,7 @@ jobs: echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local cp .env.local .env.test.local - # Tune Postgres for benchmarks - cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' - # Benchmark optimizations - shared_buffers = 4GB - effective_cache_size = 8GB - work_mem = 256MB - maintenance_work_mem = 1GB - wal_buffers = 64MB - random_page_cost = 1.1 - effective_io_concurrency = 200 - synchronous_commit = off - EOF - - yarn external-services:test up --wait + yarn external-services:bench up --wait - name: Start background tasks if: github.event_name == 'pull_request' @@ -329,20 +316,7 @@ jobs: echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local cp .env.local .env.test.local - # Tune Postgres for benchmarks - cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' - # Benchmark optimizations - shared_buffers = 4GB - effective_cache_size = 8GB - work_mem = 256MB - maintenance_work_mem = 1GB - wal_buffers = 64MB - random_page_cost = 1.1 - effective_io_concurrency = 200 - synchronous_commit = off - EOF - - yarn external-services:test up --wait + yarn external-services:bench up --wait - name: Start background tasks id: head-background-tasks diff --git a/apps/hash-external-services/docker-compose.bench.yml b/apps/hash-external-services/docker-compose.bench.yml new file mode 100644 index 00000000000..d3590854690 --- /dev/null +++ b/apps/hash-external-services/docker-compose.bench.yml @@ -0,0 +1,6 @@ +services: + postgres: + shm_size: 4GB + + volumes: + - ./postgres/postgresql.bench.conf:/etc/postgresql/postgresql.conf:ro diff --git a/apps/hash-external-services/docker-compose.test.yml b/apps/hash-external-services/docker-compose.test.yml index 2912b502b41..e66899df4f5 100644 --- a/apps/hash-external-services/docker-compose.test.yml +++ b/apps/hash-external-services/docker-compose.test.yml @@ -1,6 +1,5 @@ services: postgres: - shm_size: 4GB ports: - "${POSTGRES_PORT}:5432" diff --git a/apps/hash-external-services/package.json b/apps/hash-external-services/package.json index d87b7d474b7..b9a14d8e752 100644 --- a/apps/hash-external-services/package.json +++ b/apps/hash-external-services/package.json @@ -12,6 +12,7 @@ "build:temporal:setup": "docker buildx build --file temporal/setup.Dockerfile --build-arg TEMPORAL_VERSION=1.23.1.0 temporal --load", "codegen": "touch ../../.env.local", "deploy": "docker compose --project-name hash-external-services --file docker-compose.yml --file docker-compose.dev.yml --env-file ../../.env --env-file ../../.env.development --env-file ../../.env.local", + "deploy:bench": "docker compose --project-name hash-external-services --file docker-compose.yml --file docker-compose.test.yml --file docker-compose.bench.yml --env-file ../../.env --env-file ../../.env.test --env-file ../../.env.local", "deploy:prod": "docker compose --project-name hash-external-services --file docker-compose.yml --file docker-compose.prod.yml --env-file ../../.env --env-file ../../.env.production --env-file ../../.env.local", "deploy:test": "docker compose --project-name hash-external-services --file docker-compose.yml --file docker-compose.test.yml --env-file ../../.env --env-file ../../.env.test --env-file ../../.env.local" } diff --git a/apps/hash-external-services/postgres/postgresql.bench.conf b/apps/hash-external-services/postgres/postgresql.bench.conf new file mode 100644 index 00000000000..19ea8f9e31d --- /dev/null +++ b/apps/hash-external-services/postgres/postgresql.bench.conf @@ -0,0 +1,14 @@ +# Allow connections from all addresses +listen_addresses = '*' +log_min_messages = warning + +max_connections = 300 + +shared_buffers = 4GB +effective_cache_size = 8GB +work_mem = 256MB +maintenance_work_mem = 1GB +wal_buffers = 64MB +random_page_cost = 1.1 +effective_io_concurrency = 200 +synchronous_commit = off diff --git a/package.json b/package.json index 75c139fc80c..2060570532c 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "external-services:offline": "turbo deploy:offline --filter '@apps/hash-external-services' --", "external-services:prod": "turbo deploy:prod --filter '@apps/hash-external-services' --", "external-services:test": "turbo deploy:test --filter '@apps/hash-external-services' --", + "external-services:bench": "turbo deploy:bench --filter '@apps/hash-external-services' --", "fix": "npm-run-all --continue-on-error \"fix:*\"", "fix:constraints": "yarn constraints --fix", "fix:eslint": "mise run fix:eslint", From 967931f9f7da3fe9305f63c6c0c4463f992f1939 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 19:01:22 +0100 Subject: [PATCH 18/19] fix: package-json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2060570532c..466fca86c5f 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,10 @@ "dev:backend:api": "CARGO_TERM_PROGRESS_WHEN=never turbo dev --log-order stream --filter '@apps/hash-api' --", "dev:frontend": "CARGO_TERM_PROGRESS_WHEN=never turbo dev --log-order stream --filter '@apps/hash-frontend' --", "external-services": "turbo deploy --filter '@apps/hash-external-services' --", + "external-services:bench": "turbo deploy:bench --filter '@apps/hash-external-services' --", "external-services:offline": "turbo deploy:offline --filter '@apps/hash-external-services' --", "external-services:prod": "turbo deploy:prod --filter '@apps/hash-external-services' --", "external-services:test": "turbo deploy:test --filter '@apps/hash-external-services' --", - "external-services:bench": "turbo deploy:bench --filter '@apps/hash-external-services' --", "fix": "npm-run-all --continue-on-error \"fix:*\"", "fix:constraints": "yarn constraints --fix", "fix:eslint": "mise run fix:eslint", From b06cad191e2fb5653468e7d3341bce82d854f920 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 23 Dec 2025 19:05:28 +0100 Subject: [PATCH 19/19] move into bench again for testing --- .github/workflows/bench.yml | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 7a01abd6c71..e663ee5427f 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -240,7 +240,22 @@ jobs: echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local cp .env.local .env.test.local - yarn external-services:bench up --wait + # Tune Postgres for benchmarks + cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' + # Benchmark optimizations + shared_buffers = 4GB + effective_cache_size = 8GB + work_mem = 256MB + maintenance_work_mem = 1GB + wal_buffers = 64MB + random_page_cost = 1.1 + effective_io_concurrency = 200 + synchronous_commit = off + EOF + + sed -i 's/shm_size: 1GB/shm_size: 4GB/' apps/hash-external-services/docker-compose.yml + + yarn external-services:test up --wait - name: Start background tasks if: github.event_name == 'pull_request' @@ -316,7 +331,22 @@ jobs: echo 'HASH_GRAPH_PG_DATABASE=graph' > .env.local cp .env.local .env.test.local - yarn external-services:bench up --wait + # Tune Postgres for benchmarks + cat >> apps/hash-external-services/postgres/postgresql.conf << 'EOF' + # Benchmark optimizations + shared_buffers = 4GB + effective_cache_size = 8GB + work_mem = 256MB + maintenance_work_mem = 1GB + wal_buffers = 64MB + random_page_cost = 1.1 + effective_io_concurrency = 200 + synchronous_commit = off + EOF + + sed -i 's/shm_size: 1GB/shm_size: 4GB/' apps/hash-external-services/docker-compose.yml + + yarn external-services:test up --wait - name: Start background tasks id: head-background-tasks