Files
homarr/PHASE2-FINDINGS.md
T
Thomas Camlong c73b139dbd docs(perf): split the findings into per-subject markdown files
PHASE2-FINDINGS.md had grown past 1,200 lines mixing server memory, client rendering,
methodology and a long list of rejected experiments, which made it unusable as a
reference. Split under docs/perf/:

  README.md              headline results and the change-by-change ratio table
  SERVER-MEMORY.md       what the container's RAM is made of, layer by layer
  CLIENT-PERFORMANCE.md  dashboard cost in Chrome: DOM, fibers, images, paint
  REJECTED.md            ideas implemented, measured and abandoned, with numbers
  METHODOLOGY.md         the tools, and the measurement traps that gave wrong answers

PHASE2-FINDINGS.md is now an index so existing links keep working.

METHODOLOGY.md is the part worth keeping: every wrong number in this investigation came
from an instrument rather than the application, and each trap is written down - snapshots
cannot explain peaks, V8 truncates snapshot strings to ~1 KiB, snapshot objects are not
live handles, measuring without a forced GC measures V8's growth, taking a CDP snapshot
added 134 MiB to the process being measured, per-component React attribution silently
returns nothing on a production build, a fixed port can measure a leftover container, and
a server-side change that moves a client-side metric means the workload changed.
2026-08-10 19:08:20 +02:00

1.5 KiB
Raw Blame History

Performance findings

This file grew past 1,200 lines covering server memory, client rendering, methodology and a long list of rejected ideas at once. It has been split by subject under docs/perf/:

document subject
docs/perf/README.md Headline results and the change-by-change ratio table
docs/perf/SERVER-MEMORY.md What the container's RAM is made of, layer by layer, and what reduced it
docs/perf/CLIENT-PERFORMANCE.md Dashboard cost in Chrome: DOM, fibers, images, paint
docs/perf/REJECTED.md Ideas implemented, measured, and abandoned — with their numbers
docs/perf/METHODOLOGY.md The tools, and the measurement traps that produced wrong answers

Result in one table

Server RAM, merge-base 06724cfeb vs this branch, two alternated runs per side, cgroup anonymous memory — the figure that counts against a container limit:

stage before after change
peak 376.6 MiB 279.3 MiB −26%
boot idle 130.5 MiB 62.4 MiB −52%
after sign-in 247.4 MiB 142.9 MiB −42%
dashboard loaded 293.4 MiB 170.4 MiB −42%
4 tabs, 2 boards 366.5 MiB 258.2 MiB −30%
after 2 min idle soak 323.7 MiB 200.8 MiB −38%

No before/after range overlaps at any stage. Cost: +18% CPU, solid and non-overlapping.