docs(perf): repetition-backed headline, round-3 result, unpursued levers
Headline moves from single-sample -36% to repetition-backed -34% idle / -35% loaded (2 before, 3 after, groups non-overlapping). Round 3 (API-docs SPA lazy-loaded, MCP SDK external) is recorded as NOT a memory win: every figure lands inside the previous build's spread, so it is credited only with the deterministic -3 MB image. Also records the measured cost of the levers not pursued: in-image Redis is 8.1 MiB RSS (the catalog guessed 10-40 MB) and nginx 9.2 MiB RSS / 3.1 PSS, so neither justifies its deployment risk. next-server is 225.8 of ~236 MiB at board-loaded, so anything further has to come out of that heap.
This commit is contained in:
1 file changed
+34
@@ -155,6 +155,40 @@ The two groups do not overlap on any stage. The before-side idle samples land wi
|
||||
noise. Earlier single-sample rounds suggested −36%; the repeated figure is **−34%**, and
|
||||
that is the number used in the PR.
|
||||
|
||||
## Round 3 — tried, and reported as not a memory win
|
||||
|
||||
`@scalar/api-reference-react` (a docs SPA behind one admin tab) moved to
|
||||
`next/dynamic` with `ssr: false`, and `@modelcontextprotocol/sdk` to
|
||||
`serverExternalPackages`.
|
||||
|
||||
| metric | previous build | with round 3 |
|
||||
| --- | --- | --- |
|
||||
| idle | 90.3 / 91.1 / 100.5 | 89.4 |
|
||||
| board loaded | 163.5 / 164.6 / 176.8 | 161.5 |
|
||||
| peak | 568.0 / 590.9 / 594.2 | 563.9 |
|
||||
| image | 401 MB | **398 MB** |
|
||||
| CPU s | 17.0 | 17.5 |
|
||||
|
||||
Every memory figure lands **inside** the previous build's spread. At the better end of
|
||||
it, but inside — so on one sample this is not a demonstrated reduction and is not counted
|
||||
in the headline. Kept anyway for the deterministic −3 MB image and because a
|
||||
documentation SPA should not be compiled for an SSR pass that discards its output.
|
||||
|
||||
Recording it here rather than quietly folding it into the total: the whole point of the
|
||||
harness is to stop plausible-sounding changes from being credited with wins they did not
|
||||
produce.
|
||||
|
||||
## Measured but not pursued
|
||||
|
||||
| lever | measured cost | why not pursued |
|
||||
| --- | --- | --- |
|
||||
| in-image Redis (F12) | **8.1 MiB RSS** (6.3 PSS) | The catalog estimated 10–40 MB; the real figure is 8. Removing it means replacing the pub/sub bus for single-instance — real risk for ~5% of the footprint. |
|
||||
| in-image nginx (F13) | **9.2 MiB RSS** (3.1 PSS) | Two processes, but PSS is 3 MiB. It terminates TLS and proxies; not worth the deployment change at this size. |
|
||||
| locale subset (F19) | ~12 MB image | Reduces languages a user can pick — a product decision, not an optimisation, and it does not move RAM. |
|
||||
|
||||
`next-server` is **225.8 MiB RSS of the ~236 MiB total** at board-loaded, so process-level
|
||||
trimming has little left to give. Further wins have to come out of that one heap.
|
||||
|
||||
## Is the measurement actually behind a login?
|
||||
|
||||
Worth stating explicitly, because "28 widgets rendered" would be meaningless if the board
|
||||
|
||||
Reference in new issue
Block a user