weebo-forgejo
Operator reference

Resource budget

What the operator may cost a cluster, and what it was last measured at.

What the operator costs is measured before it ships, so it can sit on a small cluster next to others without surprises. The harness (weebo-kit-perf) starts the operator's release binary against a real apiserver (envtest), the way it runs in a pod, and measures each phase of a run: an idle startup, a warm-up load, an idle baseline, loads of CRs (created at once, changed, deleted), and a final idle window. Leaks (memory, file descriptors, threads) are judged between the two idle windows.

Budget

The limits are the kit's small-cluster budget (a few operators on a 2-4 GiB node). The last run committed with the docs (perf/weebo-forgejo.json, on 2026-10-11 with weebo-kit-perf 0.8.0) measured 200 forgejoorganizations per load; each value is the worst phase for that limit.

LimitBudgetMeasured
Startup: spawn → leader lease held15 s0.10 sok
Shutdown: SIGTERM → exit15 s0.01 sok
Memory at rest (median RSS of every idle window)64 MiB30.3 MiBok
Peak memory over the whole run192 MiB30.3 MiBok
CPU at rest (mean of every idle window)10 m0.67 mok
CPU time per object of a load50 ms9.45 msok
apiserver requests at rest60 req/min41.9 req/minok
apiserver requests per object of a load20 req6.00 reqok
Time for 100 objects of a load to converge60 s1.02 sok
Reconcile p95, any phase2 s0.05 sok
Memory not given back: final vs baseline idle window10 %6.28 %ok
File descriptors not given back160ok
Threads not given back40ok

Measuring it again

task perf

The run fails when a limit is exceeded and writes its report to target/perf/ (Markdown and JSON). PERF_OBJECTS and PERF_IDLE_SECS size it; WEEBO_PERF_BASELINE=<a previous JSON> compares with an earlier run; WEEBO_PERF_REPORT_ONLY=1 reports without failing. A scheduled workflow (.github/workflows/perf.yml, the kit's) measures it again every week on a CI runner and opens a pull request with the new report and its comparison with this one. By hand, copy the JSON report to docs/perf/weebo-forgejo.json and regenerate the docs.

On this page