Skip to content

Engprod 10109 right size ephemeral resources - #1802

Draft
ffeghali wants to merge 2 commits into
RedHatInsights:masterfrom
ffeghali:ENGPROD-10109-right-size-ephemeral-resources
Draft

Engprod 10109 right size ephemeral resources#1802
ffeghali wants to merge 2 commits into
RedHatInsights:masterfrom
ffeghali:ENGPROD-10109-right-size-ephemeral-resources

Conversation

@ffeghali

Copy link
Copy Markdown
Contributor

Summary

Right-size CPU and memory requests/limits for all 7 Clowder-managed ephemeral containers based on June 2026 Prometheus usage data.

Values are computed using the ADR-046 formula (same as app-interface-recommendations):

Parameter Formula
CPU limit Max usage × 1.2
CPU request CPU limit / 2
Memory limit Max usage × 1.2
Memory request Memory limit

Over-provisioned (reduced)

5 containers were significantly over-provisioned — some by 90%+ on CPU:

Container CPU Req CPU Lim Mem Req Mem Lim
keycloak-db 50m → 26m 100m → 53m 100Mi → 257Mi 200Mi → 257Mi
featureflags-db 50m → 19m 100m → 39m 100Mi → 137Mi 200Mi → 137Mi
featureflags-edge 100m → 8m 200m → 17m 200Mi → 72Mi 400Mi → 72Mi
mbop 50m → 2m 100m → 3m 100Mi → 111Mi 200Mi → 111Mi
mocktitlements 50m → 1m 100m → 2m 100Mi → 24Mi 200Mi → 24Mi

Note: keycloak-db and mbop memory requests were raised because the formula sets mem req = mem lim, and observed max usage (214Mi, 92Mi) was close to or above the old 100Mi request.

Under-provisioned (raised)

2 containers were running at or above their limits:

Container CPU Req CPU Lim Mem Req Mem Lim
keycloak 100m → 600m 1000m → 1200m 400Mi → 1089Mi 750Mi → 1089Mi
featureflags 50m → 49m 100m → 99m 100Mi → 366Mi 200Mi → 366Mi

Keycloak's max CPU hit 1000m against a 1000m limit, and max memory was 907Mi against a 750Mi limit — already exceeding its limit. Featureflags max memory was 305Mi against a 200Mi limit.

Net impact per namespace

Resource Before (all 7) After Delta
CPU request 450m 706m +256m
CPU limit 1700m 1413m −287m
Memory request 1.1Gi 2.0Gi +956Mi
Memory limit 2.1Gi 2.0Gi −94Mi

Overall CPU limits decrease. Memory requests increase because the formula sets req = lim (safer scheduling). Memory limits decrease slightly net. The 2 under-provisioned containers (keycloak, featureflags) account for all the increases — the other 5 are pure savings.

Data source

Files changed

  • controllers/cloud.redhat.com/providers/web/resources_keycloak.go — keycloak-db, keycloak
  • controllers/cloud.redhat.com/providers/featureflags/localfeatureflags.go — featureflags-db, featureflags, featureflags-edge
  • controllers/cloud.redhat.com/providers/web/resources_mbop.go — mbop
  • controllers/cloud.redhat.com/providers/web/resources_mocktitlements.go — mocktitlements

ffeghali added 2 commits July 16, 2026 00:33
  ENGPROD-10109

  Right-size CPU/memory requests and limits for all 7 Clowder-internal
  ephemeral containers based on 30-day Prometheus usage data (12,572
  namespaces, July 2026). Values computed using ADR-046 formula:
  CPU req = P95×1.2/2, CPU lim = Max×1.2, Mem req = P95×1.2, Mem lim = Max×1.2.

  Containers reduced (over-provisioned):
  - keycloak-db: CPU 50m/100m → 23m/70m, Mem 100Mi/200Mi → 57Mi/258Mi
  - featureflags-db: CPU 50m/100m → 17m/77m, Mem 100Mi/200Mi → 58Mi/262Mi
  - featureflags-edge: CPU 100m/200m → 7m/20m, Mem 200Mi/400Mi → 24Mi/139Mi
  - mbop: CPU 50m/100m → 1m/6m, Mem 100Mi/200Mi → 18Mi/113Mi
  - mocktitlements: CPU 50m/100m → 1m/3m, Mem 100Mi/200Mi → 10Mi/40Mi

  Containers raised (under-provisioned):
  - keycloak: CPU 100m/1000m → 598m/1201m, Mem 400Mi/750Mi → 728Mi/1434Mi
  - featureflags: CPU 50m/100m → 40m/118m, Mem 100Mi/200Mi → 240Mi/423Mi

  Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
  ENGPROD-10109

  Right-size CPU/memory requests and limits for all 7 Clowder-internal
  ephemeral containers based on June 2026 Prometheus usage data.
  Values computed using ADR-046 formula:
  CPU lim = Max×1.2, CPU req = lim/2, Mem lim = Max×1.2, Mem req = lim.

  Containers reduced (over-provisioned):
  - keycloak-db: CPU 50m/100m → 26m/53m, Mem 100Mi/200Mi → 257Mi/257Mi
  - featureflags-db: CPU 50m/100m → 19m/39m, Mem 100Mi/200Mi → 137Mi/137Mi
  - featureflags-edge: CPU 100m/200m → 8m/17m, Mem 200Mi/400Mi → 72Mi/72Mi
  - mbop: CPU 50m/100m → 2m/3m, Mem 100Mi/200Mi → 111Mi/111Mi
  - mocktitlements: CPU 50m/100m → 1m/2m, Mem 100Mi/200Mi → 24Mi/24Mi

  Containers raised (under-provisioned):
  - keycloak: CPU 100m/1000m → 600m/1200m, Mem 400Mi/750Mi → 1089Mi/1089Mi
  - featureflags: CPU 50m/100m → 49m/99m, Mem 100Mi/200Mi → 366Mi/366Mi
@ffeghali

Copy link
Copy Markdown
Contributor Author

/test-e2e

@ffeghali
ffeghali marked this pull request as draft July 17, 2026 18:15
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