diff --git a/src/local_transcriber/benchmark_experiment.py b/src/local_transcriber/benchmark_experiment.py index 1e5008e..8c8ac91 100644 --- a/src/local_transcriber/benchmark_experiment.py +++ b/src/local_transcriber/benchmark_experiment.py @@ -931,6 +931,24 @@ def _runtime_supply() -> str | None: return None +def _runtime_profile() -> str | None: + profile = _read_optional_text(Path("/sys/firmware/acpi/platform_profile")) + if profile is not None: + return profile + try: + completed = subprocess.run( + ["powerprofilesctl", "get"], + capture_output=True, + text=True, + check=False, + timeout=5, + ) + except (OSError, subprocess.TimeoutExpired): + return None + value = completed.stdout.strip() + return value or None if completed.returncode == 0 else None + + def _runtime_governor() -> str | None: values = { value @@ -1006,7 +1024,7 @@ def runtime_guard_snapshot() -> dict[str, Any]: swap = psutil.swap_memory() return { "supply": _runtime_supply(), - "profile": _read_optional_text(Path("/sys/firmware/acpi/platform_profile")), + "profile": _runtime_profile(), "governor": _runtime_governor(), "turbo": _runtime_turbo(), "power_limits": _runtime_power_limits(), diff --git a/tests/test_benchmark_experiment.py b/tests/test_benchmark_experiment.py index 0a02f34..fb1ed26 100644 --- a/tests/test_benchmark_experiment.py +++ b/tests/test_benchmark_experiment.py @@ -593,6 +593,19 @@ def test_schedule_preserves_raw_repeats_and_resumes_only_success(tmp_path): assert all(item["guard"]["attempts"][0]["valid"] for item in second["cells"]) +def test_runtime_profile_falls_back_to_powerprofilesctl(monkeypatch): + monkeypatch.setattr(experiment, "_read_optional_text", lambda _path: None) + monkeypatch.setattr( + experiment.subprocess, + "run", + lambda *args, **kwargs: experiment.subprocess.CompletedProcess( + args[0], 0, stdout="balanced\n", stderr="" + ), + ) + + assert experiment._runtime_profile() == "balanced" + + def test_runtime_guard_retries_once_and_persists_transition_evidence(tmp_path): manifest = _manifest(tmp_path) manifest["cells"][1]["enabled"] = False