asterinas/.github/workflows/benchmark_asterinas.yml
2024-06-28 20:33:21 +08:00

65 lines
2.2 KiB
YAML

name: Benchmark Asterinas
on:
# In case of manual trigger, use workflow_dispatch
workflow_dispatch:
schedule:
# Schedule to run on every day at 00:00 UTC (08:00 CST)
- cron: '0 0 * * *'
jobs:
Benchmarks:
runs-on: self-hosted
strategy:
matrix:
benchmark: [sysbench-cpu, sysbench-thread, getpid]
fail-fast: false
timeout-minutes: 60
container:
image: asterinas/asterinas:0.5.1
options: --device=/dev/kvm
env:
# Need to set up proxy since the self-hosted CI server is located in China,
# which has poor network connection to the official Rust crate repositories.
RUSTUP_DIST_SERVER: https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT: https://mirrors.ustc.edu.cn/rust-static/rustup
steps:
- uses: actions/checkout@v2
- name: Set up the environment
run: |
chmod +x test/benchmark/bench_linux_and_aster.sh
# Set up git due to the network issue on the self-hosted runner
git config --global --add safe.directory /__w/asterinas/asterinas
git config --global http.sslVerify false
git config --global http.version HTTP/1.1
- name: Run benchmark
uses: nick-invision/retry@v2 # Retry the benchmark command in case of failure
with:
timeout_minutes: 20
max_attempts: 3
command: |
make install_osdk
bash test/benchmark/bench_linux_and_aster.sh ${{ matrix.benchmark }}
on_retry_command: make clean
- name: Prepare threshold values
run: |
echo "Configuring thresholds..."
ALERT_THRESHOLD=$(jq -r '.alert_threshold' test/benchmark/${{ matrix.benchmark }}/config.json)
echo "ALERT_THRESHOLD=$ALERT_THRESHOLD" >> $GITHUB_ENV
- name: Store benchmark results
uses: asterinas/github-action-benchmark@v1
with:
name: ${{ matrix.benchmark }} Benchmark
tool: 'customSmallerIsBetter'
output-file-path: result_${{ matrix.benchmark }}.json
benchmark-data-dir-path: ''
github-token: ${{ secrets.BENCHMARK_SECRET }}
gh-repository: 'github.com/asterinas/benchmark'
auto-push: true
alert-threshold: ${{ env.ALERT_THRESHOLD }}
comment-on-alert: true
fail-on-alert: true