|
252 | 252 | {"engine": "datafusion", "format": "vortex"} |
253 | 253 | ], |
254 | 254 | "scale_factor": "1" |
| 255 | + }, |
| 256 | + { |
| 257 | + "id": "appian-nvme", |
| 258 | + "subcommand": "appian", |
| 259 | + "name": "Appian on NVME", |
| 260 | + "data_formats": ["parquet", "vortex", "vortex-compact", "duckdb"], |
| 261 | + "pr_targets": [ |
| 262 | + {"engine": "datafusion", "format": "parquet"}, |
| 263 | + {"engine": "datafusion", "format": "vortex"}, |
| 264 | + {"engine": "duckdb", "format": "parquet"}, |
| 265 | + {"engine": "duckdb", "format": "vortex"}, |
| 266 | + {"engine": "duckdb", "format": "duckdb"} |
| 267 | + ], |
| 268 | + "develop_targets": [ |
| 269 | + {"engine": "datafusion", "format": "parquet"}, |
| 270 | + {"engine": "datafusion", "format": "vortex"}, |
| 271 | + {"engine": "datafusion", "format": "vortex-compact"}, |
| 272 | + {"engine": "duckdb", "format": "parquet"}, |
| 273 | + {"engine": "duckdb", "format": "vortex"}, |
| 274 | + {"engine": "duckdb", "format": "vortex-compact"}, |
| 275 | + {"engine": "duckdb", "format": "duckdb"} |
| 276 | + ], |
| 277 | + "iterations": "10" |
255 | 278 | } |
256 | 279 | ] |
257 | 280 |
|
@@ -402,6 +425,18 @@ jobs: |
402 | 425 | ${{ matrix.iterations && format('--iterations {0}', matrix.iterations) || '' }} \ |
403 | 426 | --opt remote-data-dir=${{ matrix.remote_storage }} \ |
404 | 427 | ${{ matrix.scale_factor && format('--opt scale-factor={0}', matrix.scale_factor) || '' }} |
| 428 | +
|
| 429 | + - name: Capture file sizes |
| 430 | + if: matrix.remote_storage == null |
| 431 | + shell: bash |
| 432 | + run: | |
| 433 | + uv run --no-project scripts/capture-file-sizes.py \ |
| 434 | + vortex-bench/data \ |
| 435 | + --benchmark ${{ matrix.subcommand }} \ |
| 436 | + --commit ${{ inputs.mode == 'pr' && github.event.pull_request.head.sha || github.sha }} \ |
| 437 | + -o sizes.json |
| 438 | + cat sizes.json >> results.json |
| 439 | +
|
405 | 440 | - name: Compare results |
406 | 441 | if: inputs.mode == 'pr' |
407 | 442 | shell: bash |
@@ -435,56 +470,6 @@ jobs: |
435 | 470 | # unique benchmark configuration must have a unique comment-tag. |
436 | 471 | comment-tag: bench-pr-comment-${{ matrix.id }} |
437 | 472 |
|
438 | | - - name: Compare file sizes |
439 | | - if: inputs.mode == 'pr' && matrix.remote_storage == null |
440 | | - shell: bash |
441 | | - run: | |
442 | | - set -Eeu -o pipefail -x |
443 | | -
|
444 | | - # Capture HEAD file sizes (vortex formats only) |
445 | | - uv run --no-project scripts/capture-file-sizes.py \ |
446 | | - vortex-bench/data \ |
447 | | - --benchmark ${{ matrix.subcommand }} \ |
448 | | - --commit ${{ github.event.pull_request.head.sha }} \ |
449 | | - -o head-sizes.json |
450 | | -
|
451 | | - # Get base commit SHA (same as benchmark comparison) |
452 | | - base_commit_sha=$(\ |
453 | | - curl -L \ |
454 | | - -H "Accept: application/vnd.github+json" \ |
455 | | - -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ |
456 | | - https://api.github.com/repos/vortex-data/vortex/actions/workflows/bench.yml/runs\?branch\=develop\&status\=success\&per_page\=1 \ |
457 | | - | jq -r '.workflow_runs[].head_sha' \ |
458 | | - ) |
459 | | -
|
460 | | - # Download file sizes baseline (per-benchmark file) |
461 | | - python3 scripts/s3-download.py s3://vortex-ci-benchmark-results/file-sizes-${{ matrix.id }}.json.gz file-sizes.json.gz --no-sign-request || true |
462 | | -
|
463 | | - # Generate comparison report |
464 | | - echo '# File Sizes: ${{ matrix.name }}' > sizes-comment.md |
465 | | - echo '' >> sizes-comment.md |
466 | | -
|
467 | | - if [ -f file-sizes.json.gz ]; then |
468 | | - gzip -d -c file-sizes.json.gz | grep $base_commit_sha > base-sizes.json || true |
469 | | - if [ -s base-sizes.json ]; then |
470 | | - uv run --no-project scripts/compare-file-sizes.py base-sizes.json head-sizes.json \ |
471 | | - >> sizes-comment.md |
472 | | - else |
473 | | - echo '_No baseline file sizes found for base commit._' >> sizes-comment.md |
474 | | - fi |
475 | | - else |
476 | | - echo '_No baseline file sizes available yet._' >> sizes-comment.md |
477 | | - fi |
478 | | -
|
479 | | - cat sizes-comment.md >> $GITHUB_STEP_SUMMARY |
480 | | -
|
481 | | - - name: Comment PR with file sizes |
482 | | - if: inputs.mode == 'pr' && matrix.remote_storage == null && github.event.pull_request.head.repo.fork == false |
483 | | - uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3 |
484 | | - with: |
485 | | - file-path: sizes-comment.md |
486 | | - comment-tag: file-sizes-${{ matrix.id }} |
487 | | - |
488 | 473 | - name: Comment PR on failure |
489 | 474 | if: failure() && inputs.mode == 'pr' && github.event.pull_request.head.repo.fork == false |
490 | 475 | uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3 |
@@ -513,17 +498,6 @@ jobs: |
513 | 498 | --benchmark-id "${{ matrix.id }}" \ |
514 | 499 | --repo-url "${{ github.server_url }}/${{ github.repository }}" |
515 | 500 |
|
516 | | - - name: Upload File Sizes |
517 | | - if: inputs.mode == 'develop' && matrix.remote_storage == null |
518 | | - shell: bash |
519 | | - run: | |
520 | | - uv run --no-project scripts/capture-file-sizes.py \ |
521 | | - vortex-bench/data \ |
522 | | - --benchmark ${{ matrix.subcommand }} \ |
523 | | - --commit ${{ github.sha }} \ |
524 | | - -o sizes.json |
525 | | - bash scripts/cat-s3.sh vortex-ci-benchmark-results file-sizes-${{ matrix.id }}.json.gz sizes.json |
526 | | -
|
527 | 501 | - name: Alert incident.io |
528 | 502 | if: failure() && inputs.mode == 'develop' |
529 | 503 | uses: ./.github/actions/alert-incident-io |
|
0 commit comments