From f61ed0e102d18d41e7e25be8c0cf4da7f142e19f Mon Sep 17 00:00:00 2001 From: goodboy Date: Mon, 29 Jun 2026 17:00:53 -0400 Subject: [PATCH] Fix `_burn` bigint blowup, ctx-mgr `_read_mhz` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both `_burn()` impls (the `cpu-perf-check` script + the `_measure_sustained_headroom()` probe in `tests.conftest`) grew `x` ~x**2 per iter, so the loop quickly went bigint alloc/mul-bound — a noisy CPU load + needless memory across N procs. Mask each step to 64-bit for a steady, fixed-width ALU burn (still pegs every core, which is all the freq probe needs). Also, `_read_mhz()` opened the sysfs freq files without a ctx-mgr; `with open(...)` so the FD closes deterministically (matches the script's own `_read()`). Review: PR #468 (Copilot) https://github.com/goodboy/tractor/pull/468 (this patch was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-code --- scripts/cpu-perf-check | 6 +++++- tests/conftest.py | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/scripts/cpu-perf-check b/scripts/cpu-perf-check index fee9bd02..35622e92 100755 --- a/scripts/cpu-perf-check +++ b/scripts/cpu-perf-check @@ -77,9 +77,13 @@ def _pkg_max_mhz() -> int: def _burn(stop: float) -> None: + # fixed-width (64-bit-masked) arithmetic keeps this a steady + # ALU load; an unmasked `x` grows ~x**2/iter into a huge bigint, + # degenerating into noisy alloc/mul-bound work (and needless + # memory) across N procs. x: int = 1 while time.perf_counter() < stop: - x += x * x ^ 0x5 + x = (x + (x * x ^ 0x5)) & 0xFFFF_FFFF_FFFF_FFFF def main( diff --git a/tests/conftest.py b/tests/conftest.py index 432b217b..4acf9379 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -171,7 +171,8 @@ def _measure_sustained_headroom( def _read_mhz(path: str) -> int|None: try: - return int(open(path).read()) // 1000 + with open(path) as f: + return int(f.read()) // 1000 except OSError: return None @@ -187,9 +188,13 @@ def _measure_sustained_headroom( return 1. def _burn(stop: float) -> None: + # fixed-width (64-bit-masked) arithmetic keeps this a + # steady ALU load; an unmasked `x` grows ~x**2/iter into + # a huge bigint, degenerating into noisy alloc/mul-bound + # work (and needless memory) across N procs. x: int = 1 while time.perf_counter() < stop: - x += x * x ^ 0x5 + x = (x + (x * x ^ 0x5)) & 0xFFFF_FFFF_FFFF_FFFF # explicit `fork` ctx so we're immune to whatever global # mp start-method tractor/the suite may have set (`spawn`