-
Andrey Filippov authored
Design ruled by Andrey 07/17/2026 (lives in imagej-elphel: the capability follows the hardware the project runs on - 224/137; other programs use the same localhost socket/CLI): - perfd/elphel_perfd.py: root systemd service; line protocol on 127.0.0.1:48890 (PING/STATUS/HOLD measure|max/RELEASE); a hold is TIED TO THE CONNECTION (client crash = auto-release), refcounted, strongest profile wins. 'measure' = CPU performance (power-profiles-daemon hold, same call as the old cpu_perf_hold.py it supersedes) + GPU persistence + clocks LOCKED (default 2550 MHz; 5060 Ti burst boost measured ~2595 @ 23 W/49 C - the lock is about run-to-run +-1% reproducibility for per-item margin evaluation, not speed). 'max' = performance, unlocked. ExecStopPost=nvidia-smi -rgc so a dead daemon never leaves clocks locked. - perfd/install.sh (one-time sudo, idempotent) + perfctl (unprivileged CLI: 'perfctl hold measure -- <cmd>') + README. - Java: com.elphel.imagej.common.PerfDaemon (plain TCP, Java-8, zero deps; Hold implements AutoCloseable); Eyesis_Correction startup probe (one console line - uses the daemon when installed, prints the sudo install command when not); CuasPoseRT preloaded RT harness holds 'measure' for the timed run, releases after the RT summary. Tested end-to-end user-mode (daemon on a test port): protocol, Java client, CPU hold engaged, GPU lock correctly permission-refused as non-root, auto-release on disconnect. GPU lock path activates once installed under root. mvn package + test PASS. Co-authored-by:
Claude Opus 4.8 <claude-opus-4-8@anthropic.com> Co-authored-by:
Claude Fable 5 <claude-fable-5@anthropic.com>
74d8341c
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| README.md | ||
| elphel-perfd.service | ||
| elphel_perfd.py | ||
| install.sh | ||
| perfctl |