Files
felhom.eu/documentation/audits/sizing-2026-10-13/evidence/b4/summary.json
T
admin c885b5acf4 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.
2026-10-13 13:23:51 +02:00

313 lines
6.7 KiB
JSON

{
"apps": {
"felhom-controller": {
"samples": 285,
"rest_samples": 179,
"mem_rest_avg_mb": 39,
"mem_rest_p95_mb": 41,
"mem_peak_used_mb": 69,
"mem_peak_anon_mb": 61,
"mem_rest_anon_avg_mb": 32,
"kernel_memory_peak_mb": 153,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.28,
"cpu_peak_1m_pct": 1.6,
"cpu_peak_5s_pct": 12.0,
"work_seconds": 1430,
"containers": {
"felhom-controller": {
"peak_used_mb": 69,
"peak_anon_mb": 61,
"limit_mb": null
}
}
},
"cloudflared": {
"samples": 285,
"rest_samples": 179,
"mem_rest_avg_mb": 40,
"mem_rest_p95_mb": 40,
"mem_peak_used_mb": 40,
"mem_peak_anon_mb": 16,
"mem_rest_anon_avg_mb": 16,
"kernel_memory_peak_mb": 68,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.11,
"cpu_peak_1m_pct": 0.1,
"cpu_peak_5s_pct": 0.4,
"work_seconds": 1430,
"containers": {
"cloudflared": {
"peak_used_mb": 40,
"peak_anon_mb": 16,
"limit_mb": null
}
}
},
"filebrowser": {
"samples": 285,
"rest_samples": 179,
"mem_rest_avg_mb": 20,
"mem_rest_p95_mb": 20,
"mem_peak_used_mb": 21,
"mem_peak_anon_mb": 18,
"mem_rest_anon_avg_mb": 18,
"kernel_memory_peak_mb": 101,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.03,
"cpu_peak_1m_pct": 0.0,
"cpu_peak_5s_pct": 0.2,
"work_seconds": 1430,
"containers": {
"filebrowser": {
"peak_used_mb": 21,
"peak_anon_mb": 18,
"limit_mb": 256
}
}
},
"traefik": {
"samples": 285,
"rest_samples": 179,
"mem_rest_avg_mb": 85,
"mem_rest_p95_mb": 88,
"mem_peak_used_mb": 90,
"mem_peak_anon_mb": 23,
"mem_rest_anon_avg_mb": 19,
"kernel_memory_peak_mb": 125,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.02,
"cpu_peak_1m_pct": 0.3,
"cpu_peak_5s_pct": 1.6,
"work_seconds": 1430,
"containers": {
"traefik": {
"peak_used_mb": 90,
"peak_anon_mb": 23,
"limit_mb": null
}
}
},
"opengist": {
"samples": 285,
"rest_samples": 179,
"mem_rest_avg_mb": 24,
"mem_rest_p95_mb": 24,
"mem_peak_used_mb": 24,
"mem_peak_anon_mb": 23,
"mem_rest_anon_avg_mb": 23,
"kernel_memory_peak_mb": 28,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.03,
"cpu_peak_1m_pct": 0.0,
"cpu_peak_5s_pct": 0.3,
"work_seconds": 1430,
"containers": {
"opengist": {
"peak_used_mb": 24,
"peak_anon_mb": 23,
"limit_mb": 128
}
}
},
"grimmory": {
"samples": 279,
"rest_samples": 179,
"mem_rest_avg_mb": 458,
"mem_rest_p95_mb": 459,
"mem_peak_used_mb": 618,
"mem_peak_anon_mb": 611,
"mem_rest_anon_avg_mb": 448,
"kernel_memory_peak_mb": 676,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.83,
"cpu_peak_1m_pct": 22.0,
"cpu_peak_5s_pct": 69.9,
"work_seconds": 1400,
"containers": {
"grimmory-db": {
"peak_used_mb": 116,
"peak_anon_mb": 113,
"limit_mb": 384
},
"grimmory": {
"peak_used_mb": 506,
"peak_anon_mb": 502,
"limit_mb": 1024
}
}
},
"docmost": {
"samples": 255,
"rest_samples": 179,
"mem_rest_avg_mb": 468,
"mem_rest_p95_mb": 471,
"mem_peak_used_mb": 522,
"mem_peak_anon_mb": 465,
"mem_rest_anon_avg_mb": 408,
"kernel_memory_peak_mb": 596,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.38,
"cpu_peak_1m_pct": 0.8,
"cpu_peak_5s_pct": 3.2,
"work_seconds": 1280,
"containers": {
"docmost-postgres": {
"peak_used_mb": 49,
"peak_anon_mb": 18,
"limit_mb": 256
},
"docmost-redis": {
"peak_used_mb": 6,
"peak_anon_mb": 5,
"limit_mb": 128
},
"docmost": {
"peak_used_mb": 475,
"peak_anon_mb": 447,
"limit_mb": 512
}
}
},
"adventurelog": {
"samples": 243,
"rest_samples": 179,
"mem_rest_avg_mb": 399,
"mem_rest_p95_mb": 401,
"mem_peak_used_mb": 408,
"mem_peak_anon_mb": 319,
"mem_rest_anon_avg_mb": 310,
"kernel_memory_peak_mb": 657,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.45,
"cpu_peak_1m_pct": 19.3,
"cpu_peak_5s_pct": 26.8,
"work_seconds": 1219,
"containers": {
"adventurelog-frontend": {
"peak_used_mb": 40,
"peak_anon_mb": 34,
"limit_mb": 256
},
"adventurelog": {
"peak_used_mb": 303,
"peak_anon_mb": 290,
"limit_mb": 384
},
"adventurelog-postgres": {
"peak_used_mb": 79,
"peak_anon_mb": 8,
"limit_mb": 256
}
}
},
"mealie": {
"samples": 213,
"rest_samples": 179,
"mem_rest_avg_mb": 227,
"mem_rest_p95_mb": 228,
"mem_peak_used_mb": 237,
"mem_peak_anon_mb": 231,
"mem_rest_anon_avg_mb": 222,
"kernel_memory_peak_mb": 323,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.15,
"cpu_peak_1m_pct": 1.4,
"cpu_peak_5s_pct": 15.1,
"work_seconds": 1068,
"containers": {
"mealie": {
"peak_used_mb": 237,
"peak_anon_mb": 231,
"limit_mb": 1000
}
}
},
"claper": {
"samples": 201,
"rest_samples": 179,
"mem_rest_avg_mb": 248,
"mem_rest_p95_mb": 248,
"mem_peak_used_mb": 251,
"mem_peak_anon_mb": 169,
"mem_rest_anon_avg_mb": 166,
"kernel_memory_peak_mb": 346,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.3,
"cpu_peak_1m_pct": 0.5,
"cpu_peak_5s_pct": 2.0,
"work_seconds": 1008,
"containers": {
"claper-postgres": {
"peak_used_mb": 55,
"peak_anon_mb": 26,
"limit_mb": 256
},
"claper": {
"peak_used_mb": 199,
"peak_anon_mb": 146,
"limit_mb": 384
}
}
},
"zipline": {
"samples": 189,
"rest_samples": 179,
"mem_rest_avg_mb": 196,
"mem_rest_p95_mb": 215,
"mem_peak_used_mb": 230,
"mem_peak_anon_mb": 197,
"mem_rest_anon_avg_mb": 163,
"kernel_memory_peak_mb": 291,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.2,
"cpu_peak_1m_pct": 0.3,
"cpu_peak_5s_pct": 0.9,
"work_seconds": 948,
"containers": {
"zipline-postgres": {
"peak_used_mb": 42,
"peak_anon_mb": 19,
"limit_mb": 256
},
"zipline": {
"peak_used_mb": 189,
"peak_anon_mb": 179,
"limit_mb": 512
}
}
},
"papra": {
"samples": 177,
"rest_samples": 177,
"mem_rest_avg_mb": 266,
"mem_rest_p95_mb": 295,
"mem_peak_used_mb": 295,
"mem_peak_anon_mb": 280,
"mem_rest_anon_avg_mb": 252,
"kernel_memory_peak_mb": 337,
"oom_kills": 0,
"cpu_rest_avg_pct": 0.07,
"cpu_peak_1m_pct": 0.2,
"cpu_peak_5s_pct": 0.7,
"work_seconds": 887,
"containers": {
"papra": {
"peak_used_mb": 295,
"peak_anon_mb": 280,
"limit_mb": 768
}
}
}
},
"host": {
"host_mem_used_rest_avg_mb": 4597,
"host_mem_used_peak_mb": 4822,
"guest_mem_current_rest_avg_mb": 11871,
"guest_anon_rest_avg_mb": 2257,
"rapl_pkg_w_rest_avg": 5.07,
"rapl_pkg_w_peak_5s": 14.62,
"rapl_pkg_w_peak_1m": 10.28,
"pkg_temp_c_max": 62.0
}
}