Skip to content

docs: publish the measured memory floor, not a guessed limit - #283

Merged
GeiserX merged 1 commit into
mainfrom
docs/measured-memory-floor
Aug 6, 2026
Merged

docs: publish the measured memory floor, not a guessed limit#283
GeiserX merged 1 commit into
mainfrom
docs/measured-memory-floor

Conversation

@GeiserX

@GeiserX GeiserX commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Closes CashPilot-4c22, which asked for a number with its provenance, not a limit.

Measured, not estimated

Read from the kernel's own high-water mark (memory.peak) on a live install after 8 hours of normal operation — roughly 8 hourly collection cycles:

Container Steady state Peak
cashpilot-ui ~72 MiB 207 MiB
cashpilot-worker ~65 MiB 130 MiB

Provenance: image 1.14.1, 15 managed containers, 54.7 MB SQLite database, collectors running hourly in-process under APScheduler.

The point is the gap

The UI idles near 72 MiB and peaks near 207 — close to three times its resting size — because collection runs every collector in-process.

So a limit chosen by looking at a running container is almost certainly too low. 128 MiB looks generous against 72 MiB and will be exceeded on the first collection cycle.

And an OOM here does not look like an OOM

The container is killed mid-collection and restarts. The dashboard keeps serving the last figures it stored, so nothing on screen says anything is wrong — the symptom is "earnings stopped updating", noticed days later.

That is exactly why this page gives a number and a way to re-measure, rather than shipping a limit. The compose files still set none.

Arithmetic checked, not eyeballed

An earlier draft said "256 MiB is only 19% above 207 MiB" — which conflated headroom as a share of the limit (19%) with headroom above the peak (24%). Every figure is now absolute and unambiguous: 49 MiB spare, not a percentage that can be read two ways.

Filed separately

The live fleet is running with exactly that 49 MiB of spare on cashpilot-ui. That is a production limit, so it is your call rather than a change to make here — filed with the measurement and a suggestion.

mkdocs build --strict passes; 4351 tests pass.

CashPilot-4c22 asked for a number with its provenance rather than a limit, and
that is what this is.

Read from the kernel's own high-water mark (memory.peak) on a live install
after 8 hours of normal operation, covering roughly 8 hourly collection cycles:

  cashpilot-ui      steady ~72 MiB   PEAK 207 MiB
  cashpilot-worker  steady ~65 MiB   PEAK 130 MiB
  (image 1.14.1, 15 managed containers, 54.7 MB database)

THE POINT IS THE GAP. The UI idles near 72 MiB and peaks near 207 -- close to
three times its resting size -- because collection runs every collector
in-process. So a limit chosen by looking at a running container is almost
certainly too low: 128 MiB looks generous against 72 MiB and will be exceeded
on the first collection cycle.

And an OOM here does not look like one. The container is killed mid-collection
and restarts; the dashboard keeps serving the last figures it stored, so
nothing on screen is wrong and the symptom is "earnings stopped updating",
days later.

The shipped compose files still set NO limit. This page now explains how to
choose one if you want one, and says to re-measure on your own install rather
than trusting these figures.

Every percentage was recomputed rather than estimated -- an earlier draft said
"256 MiB is only 19% above 207 MiB", which conflated headroom-as-share-of-limit
with headroom-above-peak. It now states the absolute figure, 49 MiB.

Filed separately: the live fleet is running with exactly that 49 MiB of spare,
which is a production limit and so Sergio's call, not a change to make here.
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@GeiserX, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5aeb2acb-7e00-49c5-961b-eb1e3e365ab1

📥 Commits

Reviewing files that changed from the base of the PR and between 43a0596 and fc53b4b.

📒 Files selected for processing (1)
  • docs/configuration.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@GeiserX
GeiserX merged commit f25bfb0 into main Aug 6, 2026
2 checks passed
@GeiserX
GeiserX deleted the docs/measured-memory-floor branch August 6, 2026 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant