Audit: what a Felhom box needs — floor, 64 apps' memory and CPU, power (N100 bench); R-993..R-995; R-231 due check read green

Measured on demo-felhom (N100, 16 GB): 61 apps deployed and removed through the
product, sampled every 5 s; heavy apps with one real action (Immich 200 photos,
Jellyfin transcode, Paperless OCR, Nextcloud 500 MB, ...). sizing.json for the
estimator (tools/build_sizing.py), SIZING.md with the proposed minimum machine,
METHOD.md. Power is RAPL CPU-package only (no meter). R-993 asks the operator to
approve the minimum machine; R-994 lists catalog limits/requests that are too low;
R-995 records leftover unnamed volumes after removal. R-231's dated check measured:
dooplex-backup.service success, journal green.
This commit is contained in:
2026-10-13 13:23:51 +02:00
parent c2a6cf7a58
commit c885b5acf4
175 changed files with 58633 additions and 5 deletions
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
# queue.sh — run bench batches one after another on the N100 (only this session deploys there).
# heavy:<app> up <app> -> actions.sh <app> -> 15 min rest -> down -> analyze
# batch:<tag>:<a,b,c> up a b c -> 15 min rest -> down -> analyze
# Each batch copies its evidence before removing anything (bench.py down). A batch that fails
# still runs `down`, so nothing is left deployed.
cd "$(dirname "$0")"
for item in "$@"; do
IFS=: read -r kind tag apps <<<"$item"
if [ "$kind" = heavy ]; then apps=$tag; fi
list=${apps//,/ }
echo "=== $(date -u +%T) $kind $tag: $list"
python3 -I bench.py up "$tag" $list | tail -3
if [ "$kind" = heavy ]; then python3 -I run_action.py "$tag" "$tag" | grep -E '^@|->|up after|never|token length|status|trusted|media|ingest|library|transcode|onboarding|documents|api auth|mkcol|startup|add-library' | tail -25; fi
python3 -I bench.py down "$tag" $list | tail -4
python3 -I analyze.py "../evidence/$tag" | head -20
done
echo "=== $(date -u +%T) queue done"