energy meters: a GPU counter reading low is refuted in sandbox-meter, eoc-meter and jcp-energy too #354
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/nvml-low-counter-not-a-reading"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What was open
#341 bounded an NVML cumulative-energy counter from below in jouleclaw-energy. Three more meter crates carry the same plausibility check, and each still judged a counter in one direction only:
sandbox-meter(its NVML probe)eoc-meter(itscudaGPU telemetry)jcp-energy(featurenvml)A counter that accrued a fraction of what its board drew still advanced, so the liveness rule called it live. It was then graded
HwShuntand spent an energy ceiling it was not measuring. Under-reporting is the unsafe direction at a ceiling (jcp SPEC §5). A counter running fast fails safe.What this changes
CounterUnderRatein all three crates. It is judged against the same board telemetry with the same constants as #341:floor = (mean_usable_draw − 5 W) / 4. A counter one meter declines, another therefore does not admit. The slack comes off before the division, so an idle board makes no finding. The verdict carries the floor and the draw it was taken from.livenessmodule (gpu_counter_status), which builds everywhere.HwShuntuntil something it shares no error with, such as an external meter, validates it. The text now says so.Not changed
The meter name is
"nvml"in both modes, but each reading's provenance already separates them:HwShuntfor the counter,ModelBasedfor the power integral.Verification (build host)
nvml, eoc-metercuda) compile.Live, the slack not subtracted;x86_64-unknown-linux-gnu.tests/nvml_hardware.rsfailsclippy::type_complexitythree times. That file predates this PR and is not in any gate.🤖 Generated with Claude Code