Skip to content

fix(deploy): increase memory limits for admission-control and config-controller#19950

Closed
davdhacs wants to merge 2 commits intomasterfrom
davdhacs/fix-rcd-oom-resource-limits
Closed

fix(deploy): increase memory limits for admission-control and config-controller#19950
davdhacs wants to merge 2 commits intomasterfrom
davdhacs/fix-rcd-oom-resource-limits

Conversation

@davdhacs
Copy link
Copy Markdown
Contributor

Description

The busybox-style binary consolidation (ROX-33958, PR #19819) increased init-time
memory usage for all components. Go eagerly runs init() for all transitively
imported packages, so the consolidated binary's ~4600 transitive deps all initialize
at startup regardless of which component is actually running.

Profiling on Linux amd64 shows:

  • Standalone admission-control: ~8 MB heap after init
  • Standalone config-controller: ~5.5 MB heap after init
  • Busybox binary (all components): ~15 MB heap after init

Under the race detector (~5-10x memory multiplier), the busybox init overhead
causes OOMKills for components with tight limits:

  • config-controller (128Mi): 7 OOMKilled restarts in nightly RCD tests
  • admission-control (500Mi): 6-7 OOMKilled restarts across all 3 replicas

Changes:

  • config-controller: 128Mi → 256Mi
  • admission-control: 500Mi → 1Gi (aligns enforcement-disabled with enforcement-enabled default)

User-facing documentation

Testing and quality

  • the change is production ready: the change is GA, or otherwise the functionality is gated by a feature flag
  • CI results are inspected

Automated testing

  • modified existing tests

How I validated my change

  • Operator defaulting test updated and passes (TestReconcileAdmissionControllerDef)
  • Memory profiling confirmed busybox init overhead via measurement binaries run in Linux containers
  • Values are conservative: config-controller 256Mi is 2x the old limit with ~15 MB actual usage; admission-control 1Gi matches the existing enforcement-enabled default

🤖 Generated with Claude Code

…controller

The busybox-style binary consolidation (ROX-33958) increased init-time
memory usage for all components because Go eagerly runs init() for all
transitively imported packages. Profiling shows the consolidated binary
uses ~15 MB heap at startup vs ~5-8 MB for standalone binaries, which
under the race detector multiplier (~5-10x) causes OOMKills for
components with tight memory limits.

- config-controller: 128Mi → 256Mi (was OOMKilled in race-detector nightlies)
- admission-control: 500Mi → 1Gi for both enforcement modes (was OOMKilled
  in race-detector nightlies with 6-7 restarts across all replicas)

The admission-control enforcement-enabled default was already 1Gi; this
aligns the enforcement-disabled default to match, since the busybox binary
overhead is independent of enforcement status.

Generated with assistance from AI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 10, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@davdhacs davdhacs force-pushed the davdhacs/fix-rcd-oom-resource-limits branch from 4c8ca04 to 640aefd Compare April 10, 2026 21:44
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

🚀 Build Images Ready

Images are ready for commit 4c8ca04. To use with deploy scripts:

export MAIN_IMAGE_TAG=4.11.x-627-g4c8ca042c7

@davdhacs
Copy link
Copy Markdown
Contributor Author

Superseded by a better approach: overriding resource limits at deploy time for race-detector builds only, rather than changing Helm chart defaults.

@davdhacs davdhacs closed this Apr 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant