diff --git a/.github/workflows/bench-pr.yml b/.github/workflows/bench-pr.yml index 7e6cd69b4aa..4d2af69aaee 100644 --- a/.github/workflows/bench-pr.yml +++ b/.github/workflows/bench-pr.yml @@ -54,6 +54,8 @@ jobs: - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} + - name: Setup benchmark environment + run: sudo bash scripts/setup-benchmark.sh - uses: ./.github/actions/setup-rust with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 9743a554eae..e892bc10b63 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -56,6 +56,8 @@ jobs: with: sccache: s3 - uses: actions/checkout@v6 + - name: Setup benchmark environment + run: sudo bash scripts/setup-benchmark.sh - uses: ./.github/actions/setup-rust with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3d4b3e81b0..33d86276724 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -686,6 +686,8 @@ jobs: with: sccache: s3 - uses: actions/checkout@v6 + - name: Setup benchmark environment + run: sudo bash scripts/setup-benchmark.sh - uses: ./.github/actions/setup-rust with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/sql-benchmarks.yml b/.github/workflows/sql-benchmarks.yml index f98e7ef87d4..bdb78924313 100644 --- a/.github/workflows/sql-benchmarks.yml +++ b/.github/workflows/sql-benchmarks.yml @@ -115,6 +115,8 @@ jobs: - uses: actions/checkout@v6 if: inputs.mode != 'pr' + - name: Setup benchmark environment + run: sudo bash scripts/setup-benchmark.sh - uses: ./.github/actions/setup-rust with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/setup-benchmark.sh b/scripts/setup-benchmark.sh new file mode 100755 index 00000000000..1e02d79cc3d --- /dev/null +++ b/scripts/setup-benchmark.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +set -Eeu -o pipefail -x + +if [ "$EUID" -ne 0 ]; then + echo "Environment setup script for benchmarks should run as root." + exit 0 +fi + +# Really discourage swapping to disk +sysctl vm.swappiness=0 + +# Disable ASLR - https://docs.kernel.org/admin-guide/sysctl/kernel.html#randomize-va-space +sysctl kernel.randomize_va_space=0 + +# Reduce kernel logging to minimum +dmesg -n 1 + +# Disable some unused services and features +systemctl stop apparmor ModemManager +systemctl disable apparmor ModemManager + +# mask prevents them from being started by other services +systemctl mask ModemManager + +# For apparmor specifically, also teardown loaded profiles +aa-teardown