UChicago Benchmark Workflow¶
File: .github/workflows/uchicago.yml
This workflow runs automated benchmark jobs at the UChicago Analysis Facility to measure performance across different job types and configurations.
Trigger¶
The workflow runs:
- Every 6 hours (on schedule:
0 */6 * * *) - On pull requests to
main - Manually via
workflow_dispatch
Benchmark Jobs¶
The workflow runs 10 parallel benchmark jobs on arc-runner-set-uchicago runners:
| Job | Script | Log File | Description |
|---|---|---|---|
rucio | ./Rucio/rucio_script.sh | rucio.log | Download data using Rucio |
evnt-native | ./EVNT/UC/Native/run_evnt_native_batch.sh | log.generate | EVNT generation (native) |
evnt-el9 | ./EVNT/UC/EL9/run_evnt_el9_batch.sh | log.generate | EVNT generation (EL9 container) |
evnt-centos7 | ./EVNT/UC/CentOS7/run_evnt_centos7_batch.sh | log.generate | EVNT generation (CentOS7 container) |
truth3-native | ./TRUTH3/UC/Native/run_truth3_native_batch.sh | log.Derivation | TRUTH3 derivation (native) |
truth3-el9 | ./TRUTH3/UC/EL9/run_truth3_el9_batch.sh | log.Derivation | TRUTH3 derivation (EL9 container) |
truth3-centos7 | ./TRUTH3/UC/CentOS7/run_truth3_centos7_batch.sh | log.EVNTtoDAOD | TRUTH3 derivation (CentOS7 container) |
coffea | ./NTuple_Hist/coffea/UC/run_example.sh | coffea_hist.log | NTuple to histogram (Coffea) |
eventloop-columnar | ./NTuple_Hist/event_loop/UC/columnar/run_eventloop_arrays.sh | eventloop_arrays.log | Event loop (columnar) |
eventloop-standard | ./NTuple_Hist/event_loop/UC/standard/run_eventloop_noarrays.sh | eventloop_noarrays.log | Event loop (standard) |
fastframes | ./NTuple_Hist/fastframes/UC/run_fastframes.sh | fastframes.log | NTuple to histogram (FastFrames) |
Workflow Steps¶
Each job follows this pattern:
- Checkout - Clone the repository
- Setup Globus (if required) - Configure VOMS certificates for data access
- Execute - Run the benchmark script
- Parse - Parse logs and generate JSON payload (via parse action)
- Upload to Kibana - Send results to LogStash/Kibana (via upload action)
- Upload Logs - Store log files as GitHub artifacts
Example Job Structure¶
rucio:
runs-on: arc-runner-set-uchicago
steps:
- uses: actions/checkout@v5
- uses: ./.github/actions/setup-globus
with:
voms-usercert: ${{ secrets.VOMS_USERCERT }}
voms-userkey: ${{ secrets.VOMS_USERKEY }}
- name: execute
run: ./Rucio/rucio_script.sh uchicago
shell: bash
env:
VOMS_PASSWORD: ${{ secrets.VOMS_PASSWORD }}
- name: parse benchmark log
if: always()
uses: ./.github/actions/parse
with:
job: ${{ github.job }}
log-file: rucio.log
log-type: rucio
cluster: UC-AF
kibana-token: ${{ secrets.KIBANA_TOKEN }}
kibana-kind: ${{ secrets.KIBANA_KIND }}
host: ${{ env.NODE_NAME }}
continue-on-error: true
- name: upload to kibana
if: always()
uses: ./.github/actions/upload
with:
payload-file: payload.json
kibana-uri: ${{ secrets.KIBANA_URI }}
continue-on-error: true
- name: upload log
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}-logs
path: rucio.log
Monitoring Results¶
Viewing Workflow Runs¶
- Go to the repository's Actions tab
- Select the "uchicago" workflow
- Click on a specific run to see job details
Checking Logs¶
- Benchmark logs: Download from workflow artifacts (available for 90 days)
- Workflow logs: View in the GitHub Actions UI
- Parsing errors: Check the "parse benchmark log" step logs
- Upload errors: Check the "upload to kibana" step logs
Common Issues¶
Benchmark job failures:
- Check VOMS credentials are valid
- Verify runner has network access to required resources
- Review benchmark script logs in artifacts
Parsing failures:
- Check that log files are generated correctly
- Verify parsing script output in "parse benchmark log" step logs
- Check token and kind values are correct
Upload failures:
- Verify payload.json was generated by parse step
- Check HTTP response status in "upload to kibana" step logs
- Verify kibana-uri is correct
Benchmark Types Explained¶
Rucio Download¶
Downloads ATLAS data files using the Rucio data management system. Measures data transfer performance.
Documentation: Rucio Download Tutorial
EVNT Generation¶
Generates Monte Carlo event files (EVNT format) using different runtime environments.
Documentation: EVNT Production Tutorial
TRUTH3 Derivation¶
Creates TRUTH3 derivation files from EVNT files for truth-level analysis.
Documentation: TRUTH3 Derivation Tutorial
NTuple to Histogram¶
Converts NTuple ROOT files to histograms using various frameworks:
- Coffea: Python-based columnar analysis framework
- FastFrames: C++ framework for fast ROOT analysis
- EventLoop: Traditional ATLAS event processing framework
Next Steps¶
- Learn about the parsing and upload action
- See the development guide for adding new benchmarks
- Check documentation workflow details