diff --git a/.github/workflows/bench-pr.yml b/.github/workflows/bench-pr.yml index 539c9e45ef9..1e4c062f5a2 100644 --- a/.github/workflows/bench-pr.yml +++ b/.github/workflows/bench-pr.yml @@ -57,6 +57,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 35c2c057cb8..852baa26cda 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -54,6 +54,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 1d132b36119..7d17597f25d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -726,6 +726,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 b5152e36148..bb8233ae56e 100644 --- a/.github/workflows/sql-benchmarks.yml +++ b/.github/workflows/sql-benchmarks.yml @@ -118,6 +118,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..d45dad2e7c5 --- /dev/null +++ b/scripts/setup-benchmark.sh @@ -0,0 +1,35 @@ +#!/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 + +# Turn off frequency scaling +for gov in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do + echo performance > "$gov" 2>/dev/null || true +done + +# 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