This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
171
unikernel/duniverse/dune_/.github/workflows/bench.yml
vendored
Normal file
171
unikernel/duniverse/dune_/.github/workflows/bench.yml
vendored
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
name: Build time benchmarks
|
||||
|
||||
# Do not run this workflow on pull request since this workflow has permission to modify contents.
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions:
|
||||
# deployments permission to deploy GitHub pages website
|
||||
deployments: write
|
||||
# contents permission to update benchmark contents in gh-pages branch
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
ocaml-compiler:
|
||||
- 5.1.x
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Use OCaml ${{ matrix.ocaml-compiler }}
|
||||
uses: ocaml/setup-ocaml@v3
|
||||
with:
|
||||
ocaml-compiler: ${{ matrix.ocaml-compiler }}
|
||||
opam-depext: false
|
||||
|
||||
# dune doesn't have any additional dependencies so we can build it right
|
||||
# away this makes it possible to see build errors as soon as possible
|
||||
- run: opam exec -- make _boot/dune.exe
|
||||
|
||||
- name: Install deps on Unix
|
||||
run: |
|
||||
opam install . --deps-only --with-test
|
||||
opam exec -- make dev-deps
|
||||
# Install hyperfine
|
||||
wget https://github.com/sharkdp/hyperfine/releases/download/v1.14.0/hyperfine_1.14.0_amd64.deb
|
||||
sudo dpkg -i hyperfine_1.14.0_amd64.deb
|
||||
|
||||
- name: Create watch synthetic benchmark
|
||||
working-directory: bench
|
||||
run: opam exec -- ../_boot/dune.exe exec ./gen_synthetic_dune_watch.exe -- synthetic-watch
|
||||
|
||||
- name: Run synthetic watch benchmark
|
||||
working-directory: bench/synthetic-watch
|
||||
run: ../gen-benchmark.sh 'opam exec -- ../run-synthetic-dune-watch.sh ../../_boot/dune.exe' 'opam exec -- ../../_boot/dune.exe build @all' 'synthetic watch build time (warm, ${{ runner.os }})' > synthetic-benchmark-result.json
|
||||
|
||||
- name: Print synthetic watch benchmark results
|
||||
working-directory: bench/synthetic-watch
|
||||
run: |
|
||||
cat bench.json
|
||||
cat synthetic-benchmark-result.json
|
||||
|
||||
- name: Store synthetic watch benchmark result
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
with:
|
||||
name: Synthetic Watch Benchmark
|
||||
tool: "customSmallerIsBetter"
|
||||
output-file-path: bench/synthetic-watch/synthetic-benchmark-result.json
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
auto-push: true
|
||||
# Ratio indicating how worse the current benchmark result is.
|
||||
# 175% means if last build took 40s and current takes >70s, it will trigger an alert
|
||||
alert-threshold: "225%"
|
||||
fail-on-alert: true
|
||||
# Enable alert commit comment
|
||||
comment-on-alert: true
|
||||
# Mention @jchavarri in the commit comment
|
||||
alert-comment-cc-users: '@jchavarri'
|
||||
|
||||
- name: Clone pupilfirst fork
|
||||
run: git clone --depth 1 https://github.com/jchavarri/pupilfirst.git
|
||||
|
||||
- name: Install all deps
|
||||
working-directory: pupilfirst
|
||||
run: opam install -y . --deps-only
|
||||
|
||||
- name: Run pupilfirst benchmark
|
||||
working-directory: pupilfirst
|
||||
run: ../bench/gen-benchmark.sh 'opam exec -- ../_boot/dune.exe build --root=. @main' 'opam exec -- ../_boot/dune.exe clean --root=.' 'pupilfirst build time (${{ runner.os }})' > melange-benchmark-result.json
|
||||
|
||||
- name: Print pupilfirst benchmark results
|
||||
working-directory: pupilfirst
|
||||
run: |
|
||||
cat bench.json
|
||||
cat melange-benchmark-result.json
|
||||
|
||||
- name: Store melange benchmark result
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
with:
|
||||
name: Melange Benchmark
|
||||
tool: "customSmallerIsBetter"
|
||||
output-file-path: pupilfirst/melange-benchmark-result.json
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
auto-push: true
|
||||
# Ratio indicating how worse the current benchmark result is.
|
||||
# 150% means if last build took 40s and current takes >60s, it will trigger an alert
|
||||
alert-threshold: "225%"
|
||||
fail-on-alert: true
|
||||
# Enable alert commit comment
|
||||
comment-on-alert: true
|
||||
# Mention @jchavarri in the commit comment
|
||||
alert-comment-cc-users: '@jchavarri'
|
||||
|
||||
- name: Create synthetic benchmark
|
||||
working-directory: bench
|
||||
run: opam exec -- ../_boot/dune.exe exec ./gen_synthetic.exe -- -n 2000 synthetic
|
||||
|
||||
- name: Run cold synthetic benchmark
|
||||
working-directory: bench/synthetic
|
||||
run: ../gen-benchmark.sh 'opam exec -- ../../_boot/dune.exe build @all' 'opam exec -- ../../_boot/dune.exe clean' 'synthetic build time (cold, ${{ runner.os }})' > synthetic-benchmark-result.json
|
||||
|
||||
- name: Print cold synthetic benchmark results
|
||||
working-directory: bench/synthetic
|
||||
run: |
|
||||
cat bench.json
|
||||
cat synthetic-benchmark-result.json
|
||||
|
||||
- name: Store cold synthetic benchmark result
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
with:
|
||||
name: Synthetic Benchmark
|
||||
tool: "customSmallerIsBetter"
|
||||
output-file-path: bench/synthetic/synthetic-benchmark-result.json
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
auto-push: true
|
||||
# Ratio indicating how worse the current benchmark result is.
|
||||
# 150% means if last build took 40s and current takes >60s, it will trigger an alert
|
||||
alert-threshold: "225%"
|
||||
fail-on-alert: true
|
||||
# Enable alert commit comment
|
||||
comment-on-alert: true
|
||||
# Mention @jchavarri in the commit comment
|
||||
alert-comment-cc-users: '@jchavarri'
|
||||
|
||||
- name: Run warm synthetic benchmark
|
||||
working-directory: bench/synthetic
|
||||
run: ../gen-benchmark.sh 'opam exec -- ../../_boot/dune.exe build @all' 'true' 'synthetic build time (warm, ${{ runner.os }})' > synthetic-benchmark-result.json
|
||||
|
||||
- name: Print warm synthetic benchmark results
|
||||
working-directory: bench/synthetic
|
||||
run: |
|
||||
cat bench.json
|
||||
cat synthetic-benchmark-result.json
|
||||
|
||||
- name: Store warm synthetic benchmark result
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
with:
|
||||
name: Synthetic Benchmark
|
||||
tool: "customSmallerIsBetter"
|
||||
output-file-path: bench/synthetic/synthetic-benchmark-result.json
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
auto-push: true
|
||||
# Ratio indicating how worse the current benchmark result is.
|
||||
# 150% means if last build took 40s and current takes >60s, it will trigger an alert
|
||||
alert-threshold: "225%"
|
||||
fail-on-alert: true
|
||||
# Enable alert commit comment
|
||||
comment-on-alert: true
|
||||
# Mention @jchavarri in the commit comment
|
||||
alert-comment-cc-users: '@jchavarri'
|
||||
Loading…
Add table
Add a link
Reference in a new issue