219219 "id": "fineweb",
220220 "subcommand": "fineweb",
221221 "name": "FineWeb NVMe",
222- "cold_io_query": "7",
223- "cold_io_samples": "5",
224222 "data_formats": ["parquet", "vortex", "vortex-compact"],
225223 "pr_targets": [
226224 {"engine": "datafusion", "format": "parquet"},
472470 "id": "fineweb",
473471 "subcommand": "fineweb",
474472 "name": "FineWeb NVMe",
475- "cold_io_query": "7",
476- "cold_io_samples": "5",
477473 "data_formats": ["parquet", "vortex"],
478474 "pr_targets": [
479475 {"engine": "datafusion", "format": "parquet"},
@@ -613,24 +609,6 @@ jobs:
613609 --formats-json '${{ toJSON(matrix.data_formats) }}' \
614610 ${{ matrix.scale_factor && format('--opt scale-factor={0}', matrix.scale_factor) || '' }}
615611
616- - name : Place cold benchmark data on ephemeral storage
617- if : inputs.mode == 'pr' && matrix.cold_io_query != null
618- shell : bash
619- run : |
620- set -Eeuo pipefail
621-
622- if [ ! -d /mnt/ephemeral ]; then
623- echo "::warning::/mnt/ephemeral is unavailable; using the workspace filesystem"
624- exit 0
625- fi
626-
627- source_dir="vortex-bench/data/${{ matrix.subcommand }}"
628- data_root="/mnt/ephemeral/vortex-bench-data-${{ github.run_id }}"
629- data_dir="${data_root}/${{ matrix.subcommand }}"
630- sudo install -d -o "$(id -u)" -g "$(id -g)" "$data_root"
631- mv "$source_dir" "$data_dir"
632- ln -s "$data_dir" "$source_dir"
633-
634612 - name : Setup AWS CLI
635613 if : inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false
636614 uses : aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6
@@ -660,9 +638,7 @@ jobs:
660638 extra_args : " --off-cpu-threshold=0.03" # Personally tuned by @brancz
661639
662640 - name : Run ${{ matrix.name }} benchmark
663- if : >-
664- (matrix.remote_storage == null || github.event.pull_request.head.repo.fork == true)
665- && (inputs.mode != 'pr' || matrix.cold_io_query == null)
641+ if : matrix.remote_storage == null || github.event.pull_request.head.repo.fork == true
666642 shell : bash
667643 env :
668644 OTEL_SERVICE_NAME : " vortex-bench"
@@ -680,80 +656,6 @@ jobs:
680656 ${{ matrix.iterations && format('--iterations {0}', matrix.iterations) || '' }} \
681657 ${{ matrix.scale_factor && format('--opt scale-factor={0}', matrix.scale_factor) || '' }}
682658
683- - name : Run cold buffered vs direct ${{ matrix.name }} benchmark
684- if : inputs.mode == 'pr' && matrix.cold_io_query != null
685- shell : bash
686- env :
687- OTEL_SERVICE_NAME : " vortex-bench"
688- OTEL_EXPORTER_OTLP_PROTOCOL : " http/protobuf"
689- OTEL_EXPORTER_OTLP_ENDPOINT : " ${{ github.event.pull_request.head.repo.fork == false && secrets.OTEL_EXPORTER_OTLP_ENDPOINT || '' }}"
690- OTEL_EXPORTER_OTLP_HEADERS : " ${{ github.event.pull_request.head.repo.fork == false && secrets.OTEL_EXPORTER_OTLP_HEADERS || '' }}"
691- OTEL_RESOURCE_ATTRIBUTES : " bench-name=${{ matrix.id }}-cold-io"
692- run : |
693- set -Eeuo pipefail
694-
695- results_dir="cold-io-results"
696- mkdir -p "$results_dir"
697-
698- data_file="$(find \
699- "vortex-bench/data/${{ matrix.subcommand }}/vortex-file-compressed" \
700- -type f -name '*.vortex' -print -quit)"
701- if [ -z "$data_file" ]; then
702- echo "No Vortex data file found for the cold I/O benchmark" >&2
703- exit 1
704- fi
705-
706- {
707- echo "Data file: $data_file"
708- findmnt -T "$data_file"
709- lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
710- } | tee "$results_dir/filesystem.txt"
711-
712- sudo -n true
713-
714- run_cold() {
715- local mode="$1"
716- local direct_io="$2"
717- local sample="$3"
718- local output="$results_dir/${mode}-${sample}.jsonl"
719- local log="$results_dir/${mode}-${sample}.log"
720-
721- sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
722- if command -v fincore >/dev/null 2>&1; then
723- fincore "$data_file" | tee -a "$log"
724- fi
725-
726- VORTEX_DIRECT_IO="$direct_io" \
727- bash scripts/bench-taskset.sh \
728- target/release_debug/datafusion-bench "${{ matrix.subcommand }}" \
729- --display-format gh-json \
730- --iterations 1 \
731- --hide-progress-bar \
732- --formats vortex \
733- --queries "${{ matrix.cold_io_query }}" \
734- --runner "ec2_${{ inputs.machine_type }}" \
735- --show-metrics \
736- -o "$output" 2>&1 | tee -a "$log"
737- }
738-
739- for sample in $(seq 1 "${{ matrix.cold_io_samples }}"); do
740- if (( sample % 2 == 1 )); then
741- run_cold buffered 0 "$sample"
742- run_cold direct 1 "$sample"
743- else
744- run_cold direct 1 "$sample"
745- run_cold buffered 0 "$sample"
746- fi
747- done
748-
749- python3 scripts/summarize-cold-io.py \
750- "$results_dir" \
751- --query "${{ matrix.cold_io_query }}" \
752- --filesystem "$results_dir/filesystem.txt" \
753- > comment.md
754- cp comment.md "$results_dir/comment.md"
755- cat comment.md >> "$GITHUB_STEP_SUMMARY"
756-
757659 - name : Run ${{ matrix.name }} benchmark (remote)
758660 if : matrix.remote_storage != null && (inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false)
759661 shell : bash
@@ -776,9 +678,7 @@ jobs:
776678 ${{ matrix.scale_factor && format('--opt scale-factor={0}', matrix.scale_factor) || '' }}
777679
778680 - name : Capture file sizes
779- if : >-
780- matrix.remote_storage == null
781- && (inputs.mode != 'pr' || matrix.cold_io_query == null)
681+ if : matrix.remote_storage == null
782682 shell : bash
783683 run : |
784684 uv run --no-project scripts/capture-file-sizes.py \
@@ -789,7 +689,7 @@ jobs:
789689 cat sizes.json >> results.json
790690
791691 - name : Compare results
792- if : inputs.mode == 'pr' && matrix.cold_io_query == null
692+ if : inputs.mode == 'pr'
793693 shell : bash
794694 run : |
795695 set -Eeu -o pipefail -x
@@ -801,13 +701,6 @@ jobs:
801701 > comment.md
802702 cat comment.md >> "$GITHUB_STEP_SUMMARY"
803703
804- - name : Upload cold I/O results
805- if : always() && inputs.mode == 'pr' && matrix.cold_io_query != null
806- uses : actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
807- with :
808- name : cold-io-${{ matrix.id }}
809- path : cold-io-results
810-
811704 - name : Comment PR
812705 if : inputs.mode == 'pr' && github.event.pull_request.head.repo.fork == false
813706 uses : thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3
0 commit comments