Repository navigation
Conversation
|
I haven't reviewed it yet, but from the description: is there any reason for keeping |
There was a problem hiding this comment.
Are you sure you want to add this here?
There is some documentation about allocated time left in https://github.com/DIRACGrid/DIRAC/blob/fb7d33f0f20426b5dd4fe5c22b50299ce65ac198/docs/source/AdministratorGuide/Systems/WorkloadManagement/allocatedTime.rst
There was a problem hiding this comment.
I am indeed not sure I want to keep this glossary (one of the several reasons why this is a draft).
1356c05 to
42ac8bf
Compare
|
CI note: the 6 |
448ae51 to
acf8bf2
Compare
9cd7d8f to
c23a3a1
Compare
Replace the DB12 measurement as the primary source of the node's CPU power: the pilot now looks up the per-core HS23 (HEPScore23) score in the HEPiX scores table, matching on normalized CPU model and SMT state (# Meas-weighted mean over the matching rows). DB12 survives only as fallback, and the provenance of each node's value is recorded in /LocalSite/CPUNormalizationSource and published as a job parameter. Phase 1 (this PR) records and reports only: the HS23 value is stored in the new /LocalSite/CPUNormalizationFactorHS23 option and published as a job parameter; nothing consumes it yet. Adoption is governed by Operations/JobScheduling/CPUNormalizationUnit (DB12 | HS23, default DB12) and JobScheduling/RunDB12Benchmark (unset: run DB12 iff the unit is DB12), with the table locations configurable via JobScheduling/HS23TableLocations (default: the HEPiX GitHub URL). See GLOSSARY.md and docs/adr/0001-hs23-cpu-power-from-hepix-table.md.
- Ship a pre-aggregated snapshot of the HEPiX HEPScore23 table (data/HS23scores.json, one entry per normalized CPU model and SMT state) as part of the release; the pilot never fetches anything at runtime. A nightly CI workflow regenerates it with the generator script from DIRACGrid/management and opens a PR whenever the derived table changed. - JobScheduling/CPUNormalizationUnit becomes an ordered list (default ["DB12"]): membership decides what is recorded, the first entry is the active unit. Supersedes the RunDB12Benchmark flag planned in the first iteration. The policy is setup-global, with no per-site choice. - DB12 is measured when listed, or as fallback when the active unit is HS23 and the lookup fails; provenance records the active source.
c23a3a1 to
5a0bf62
Compare
New feature: CPU power from the HEPiX HS23 table
Part of #8871.
Summary
The pilot has always measured the node with DB12 at bootstrap and written the result to
/LocalSite/CPUNormalizationFactor. This PR makes the HEPiX HEPScore23 (HS23) scores table the primary source of the node's CPU power, with DB12 demoted to fallback. Phase 1 records and reports only: nothing consumes the HS23 value yet (ADR:docs/adr/0001-hs23-cpu-power-from-hepix-table.md).What is new
# Meas-weighted mean ofScore/Ncores, provenance header (source URL, content hash, data-as-of)WorkloadManagementSystem/Client/data/HS23scores.json(158 entries, 48 KB, shipped in the wheel)WorkloadManagementSystem/Client/HS23Table.py/LocalSite/CPUNormalizationFactorHS23,/LocalSite/CPUNormalizationSource=HS23table|DB12Operations/JobScheduling/CPUNormalizationUnit— ordered list, default["DB12"]; membership decides what is recorded, the first entry is the active unit.github/workflows/hs23-table-update.ymlruns the generator from DIRACGrid/management#74 and opens/updates a PR on any derived change (new models or score changes), never merged automaticallyCPUNormalizationFactorHS23andCPUNormalizationSourcepublished alongsideCPUNormalizationFactorThe table is never fetched at runtime: a release pins a known table state. A CPU model newer than the bundled snapshot falls back to DB12 until the table PR is merged and released — deliberately no per-site escape hatch.
Node detection: logical/physical core counts and the SMT state come from psutil (already a hard dependency); only the CPU model name needs reading
/proc/cpuinfo, as psutil does not expose it on Linux.Deliberately not in this PR: consumers honoring the active unit (Matcher, JobAgent, Watchdog, accounting) — that is phase 2, and it must come with recalibration of the DB12-calibrated thresholds (
StopSig*,MinimumTimeLeft, LHCbCPUe). With the default["DB12"], behavior is unchanged.Evidence
pytest src/DIRAC/WorkloadManagementSystem/Client/test/Test_HS23Table.py: 15 passed, including a sanity check of the bundled snapshot itself (normalized keys, plausible scores) and lookups against the real data.test_setInitialJobParametersextended: both new parameters are published when present inceArgs, absent otherwise.Test_JobWrapper.py(test_*dirac_jobexec*) fail identically onintegrationwithout this PR.Merge Danger
Door: two-way — with the default
["DB12"]no consumer behavior changes; pilots just record one extra option inpilot.cfg.Blast Radius: pilot bootstrap on every site; the nightly workflow is new and fails visibly if the generator CLI changes.
Companion PRs: DIRACGrid/Pilot#289 (
ConfigureCPURequirementstolerates a missing DB12 value) and DIRACGrid/management#74 (generator script + tests).