CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Test Runner -> results dashboard: results emission & scrape contract
This documents how test_runner.py emits results and how the results
dashboard consumes them.
Two writers, one schema
Both paths write the same schema (schema.sql) and are idempotent on
runs.run_id, so a run may be delivered by either or both without duplication:
test_runner.py --db-push— best-effort direct push from the test host.- Dashboard-side ingest job — reads scraped
*.tar.gzand upserts.
run_id is generated once per invocation as YYYYMMDDThhmmssZ-<8hex>.
Runs may carry tags (--tag/--tags) for dashboard filtering. Tags are set
at emit time; on re-ingest they are left untouched, so once a run is in the DB
its tags are mutable only via the dashboard (admin-gated).
Enabling emission
# Local files only (durable; feeds the hourly scrape):
python3 test_runner.py -c configs/rccl_perf_tests.json --emit-results
# Local files + best-effort direct DB push:
export RCCL_RESULTS_DSN='postgresql://rccl_writer:***@dash-host:5432/rccl'
python3 test_runner.py -c configs/rccl_perf_tests.json --db-push
--db-pushimplies--emit-results.- If the DB push fails/times out, the run still succeeds and the local tarball is
retained for the scrape. The DSN is read only from
RCCL_RESULTS_DSN; it is never hardcoded or written into the emitted files. - Enabling emission also turns on per-test log capture (via
tee), which is what lets the emitter parsebusbw/algbwfrom rccl-tests output. Default behaviour (no capture) is unchanged when emission is off.
Output layout (--results-dir, default <workspace>/results)
results/
<run_id>/
run.json # run manifest (sha, host, config, env, summary, coverage, tags)
tests.jsonl # one line per test result
perf.jsonl # one line per (size, place) perf row, with collective/avg
coverage.json # llvm-cov TOTAL percentages (if --coverage-report)
logs/ # captured per-test logs (+ coverage rawfiles)
report/ # llvm-cov HTML + function_coverage_report.txt (if generated)
<run_id>.tar.gz # self-contained snapshot of <run_id>/
latest.tar.gz # copy of the most recent snapshot (stable scrape target)
latest.json # most recent run manifest
index.jsonl # append-only: one summary line per run
Scrape contract (hourly cron + scp)
The dashboard host pulls new snapshots on a schedule and ingests them:
# On the dashboard host. Pulls any new run tarballs, then ingests.
0 * * * * rsync -az --ignore-existing \
testhost:/path/to/results/*.tar.gz /var/lib/rccl-dashboard/incoming/ \
&& /var/lib/rccl-dashboard/ingest.py /var/lib/rccl-dashboard/incoming
Notes:
rsync --ignore-existing(orscpof only-new files) makes the pull idempotent; the ingest job is also idempotent onrun_id.- Scrapers that only want the newest run can grab
latest.tar.gz/latest.json. index.jsonllets a scraper enumerate historical runs without untarring.
Applying the schema
psql "$RCCL_RESULTS_DSN" -f schema.sql