| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 6s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m35s
energy meters on real hardware / sink decode table · per-task energy and the GPU rail on macOS (pull_request) Successful in 2m46s
standards workspaces build + test / eoc-rs (eoc/eoc-rs, -p eoc-meter --features cuda, eoc-rs, linux) (pull_request) Successful in 2m43s
energy meters on real hardware / RAPL and NVML on jetson-hub (pull_request) Successful in 36s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 6m57s
energy meters on real hardware / sink decode table · RAPL on jetson-hub (NVML surveyed) (pull_request) Successful in 2m22s
The kernel scopes Intel's RAPL energy counters per die. Its perf PMU treats
the package counter as package-scope only on AMD and Hygon ("AMD/HYGON
platforms have a per-PKG package energy counter", rapl_pkg_pmu_is_pkg_scope()
in arch/x86/events/rapl.c), and on a multi-die Intel package (Cascade Lake-AP)
"its RAPL MSRs are die-scope"; its powercap driver then lists one zone per die,
named package-<p>-die-<d> (intel_rapl_common.c). Both paths here under-counted
such a package, the unsafe direction at a ceiling:
- The MSR fallback grouped CPUs by physical_package_id alone, so it read one
die of a multi-die Intel package. On Intel a counter domain is now
(physical_package_id, die_id), die_id 0 where the file is absent; on AMD
and Hygon it stays the package. Each domain is read on its lowest-numbered
CPU and every domain is summed, all or nothing as before (zero unit, wrap,
powercap preferred, status text unchanged). A die of a multi-die package
has its own rail name, package-<p>-die-<d> (MSR), in the liveness rails and
in errors.
- The powercap name rule accepted only package-<n>, so such a host's die
zones were no package at all. It now also accepts package-<p>-die-<d>, and
nothing looser (not psys, dram, package-, package-0-die-,
package-0-core-0), so every die zone is summed and watched.
The hardware test's oracle follows both rules: its zone check accepts die
zones, and its MSR reader groups Intel CPUs by package and die.
Tests (fake files): an Intel package of two dies is two counters, each read
on its own first CPU, both summed, with distinct rails, and a die whose device
is missing leaves no figure; an AMD package whose CPUs report different
die_ids is one counter; an Intel host with no die_id files, or all on die 0,
is read per package as before; the name rule over die names and near misses;
a fake two-die powercap tree sums both zones and is frozen when one die holds.
Unit tests pass on Linux x86_64 (default and cuda) and on macOS (the CI step,
its `ioreport liveness:` line printed); clippy is clean on macOS and on Linux
in the default build.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
||
| .. | ||
| eoc | ||
| eoc-agent | ||
| eoc-cache | ||
| eoc-carbon | ||
| eoc-cascade | ||
| eoc-core | ||
| eoc-distributed | ||
| eoc-embeddings | ||
| eoc-eval | ||
| eoc-graph | ||
| eoc-kv | ||
| eoc-local | ||
| eoc-memory | ||
| eoc-meter | ||
| eoc-multimodal | ||
| eoc-neural | ||
| eoc-observability | ||
| eoc-quantize | ||
| eoc-rag | ||
| eoc-rerank | ||
| eoc-route-learned | ||
| eoc-safety | ||
| eoc-spec-decode | ||
| eoc-streaming | ||
| eoc-tools | ||
| eoc-vendor-api | ||
| eoc-wasm | ||