Skip to content

HS23 table generator for the DIRAC bundled snapshot - #74

Open
fstagni wants to merge 1 commit into
ci-management-fixesfrom
hs23-table-generator
Open

fstagni wants to merge 1 commit into
ci-management-fixesfrom
hs23-table-generator

Conversation

@fstagni

@fstagni fstagni commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

New feature: HS23 table generator

Script that generates the pre-aggregated HS23 (HEPScore23) scores snapshot bundled with DIRAC, plus its tests. It is run nightly by a workflow in the DIRAC repository (hs23-table-update.yml, part of DIRACGrid/DIRAC#8870): download the HEPiX CSV, validate, aggregate to one entry per (normalized CPU model, SMT state) with a # Meas-weighted mean of Score/Ncores, emit deterministic JSON with provenance.

DIRAC opens or updates a PR whenever the derived table changed (new CPU models or score changes), never merged automatically. Context: DIRACGrid/DIRAC#8871, DIRACGrid/DIRAC#8870.

Evidence

  • pytest hs23-table/test_generate_hs23_table.py: 7 passed (validation/anomaly skipping, weighted mean, one-entry-per-key sorting, header fields, deterministic output, normalization kept in sync with DIRAC's).
  • Run against the real HEPiX CSV: 158 entries from 289 rows, 0 anomalies, 48 KB output.

Stacked on #75 (CI fixes: modernized Python tests workflow, CVMFS deploy scoped to master, and a latent NameError fix in dirac-install.py found by pylint 4) — merge #75 first, then this PR. The workflow changes here (a step running the generator's tests and linting its script) only work once #75's workflow fixes are in.

Merge Danger

Door: two-way — new files only, nothing existing depends on them.

Blast Radius: the DIRAC nightly job starts failing (visibly) if this script moves or changes its CLI; DIRAC itself is unaffected until its bundled JSON is regenerated.

Generates the pre-aggregated snapshot of the HEPiX HEPScore23 scores
table that DIRAC bundles as
src/DIRAC/WorkloadManagementSystem/Client/data/HS23scores.json: the CSV
is validated, aggregated to one entry per (normalized CPU model, SMT
state) with a # Meas-weighted mean of Score/Ncores, and emitted as
deterministic JSON with provenance (source URL, content hash, data-as-of
date). Output is stable for identical input so a plain diff in the
nightly CI job of the DIRAC repository tells whether anything changed.

The Python tests workflow gains a step running the generator tests and
linting the script, which live with it in this repository.
@fstagni
fstagni force-pushed the hs23-table-generator branch from 7aa4049 to 1fd2c16 Compare November 9, 2026 12:51
@fstagni
fstagni changed the base branch from master to ci-management-fixes November 9, 2026 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant