-
Notifications
You must be signed in to change notification settings - Fork 150
133 lines (117 loc) · 4.75 KB
/
bench.yml
File metadata and controls
133 lines (117 loc) · 4.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Runs after every commit to `develop` (or in other words, _after_ every pull request merges).
name: Benchmarks
on:
push:
branches: [develop]
permissions:
id-token: write # enables AWS-GitHub OIDC
actions: read
contents: write
jobs:
commit-metadata:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup AWS CLI
uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6
with:
role-to-assume: arn:aws:iam::245040174862:role/GitHubBenchmarkRole
aws-region: us-east-1
- name: Upload Commit Metadata
shell: bash
run: |
set -Eeu -o pipefail -x
sudo apt-get update && sudo apt-get install -y jq
bash scripts/commit-json.sh > new-commit.json
bash scripts/cat-s3.sh vortex-ci-benchmark-results commits.json new-commit.json
bench:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/extras=s3-cache/tag={1}', github.run_id, matrix.benchmark.id)
|| 'ubuntu-latest' }}
strategy:
fail-fast: false
matrix:
benchmark:
- id: random-access-bench
name: Random Access
build_args: "--features lance"
formats: "parquet,lance,vortex"
- id: compress-bench
name: Compression
build_args: "--features lance"
formats: "parquet,lance,vortex"
steps:
- uses: runs-on/action@v2
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup benchmark environment
run: sudo bash scripts/setup-benchmark.sh
- uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install DuckDB
run: |
wget -qO- https://github.com/duckdb/duckdb/releases/download/v1.5.2/duckdb_cli-linux-amd64.zip | funzip > duckdb
chmod +x duckdb
echo "$PWD" >> $GITHUB_PATH
- uses: ./.github/actions/system-info
- name: Build binary
shell: bash
env:
RUSTFLAGS: "-C target-cpu=native"
run: |
cargo build --bin ${{ matrix.benchmark.id }} --profile release_debug ${{ matrix.benchmark.build_args }} --features unstable_encodings
- name: Setup Polar Signals
uses: polarsignals/gh-actions-ps-profiling@68ae857e375a826606352016e5b90f01a2a7ff7a # v0.8.1
with:
polarsignals_cloud_token: ${{ secrets.POLAR_SIGNALS_API_KEY }}
labels: "branch=${{ github.ref_name }};gh_run_id=${{ github.run_id }};benchmark=${{ matrix.benchmark.id }}"
project_uuid: "e5d846e1-b54c-46e7-9174-8bf055a3af56"
profiling_frequency: 199
extra_args: "--off-cpu-threshold=0.03" # Personally tuned by @brancz
- name: Run ${{ matrix.benchmark.name }} benchmark
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
bash scripts/bench-taskset.sh target/release_debug/${{ matrix.benchmark.id }} --formats ${{ matrix.benchmark.formats }} -d gh-json -o results.json --gh-json-v3 results.v3.jsonl
- name: Setup AWS CLI
uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6
with:
role-to-assume: arn:aws:iam::245040174862:role/GitHubBenchmarkRole
aws-region: us-east-1
- name: Upload Benchmark Results
shell: bash
run: |
bash scripts/cat-s3.sh vortex-ci-benchmark-results data.json.gz results.json
- name: Ingest results to v3 server
if: vars.V3_INGEST_URL != ''
continue-on-error: true
shell: bash
env:
INGEST_BEARER_TOKEN: ${{ secrets.INGEST_BEARER_TOKEN }}
run: |
python3 scripts/post-ingest.py results.v3.jsonl \
--server "${{ vars.V3_INGEST_URL }}" \
--commit-sha "${{ github.sha }}" \
--benchmark-id "${{ matrix.benchmark.id }}" \
--repo-url "${{ github.server_url }}/${{ github.repository }}"
- name: Alert incident.io
if: failure()
uses: ./.github/actions/alert-incident-io
with:
api-key: ${{ secrets.INCIDENT_IO_ALERT_TOKEN }}
alert-title: "${{ matrix.benchmark.name }} benchmark failed on develop"
deduplication-key: ci-bench-${{ matrix.benchmark.id }}-failure
sql:
uses: ./.github/workflows/sql-benchmarks.yml
secrets: inherit
with:
mode: "develop"