Compare commits

...
Author SHA1 Message Date
Ruben Hensen 1f894996e6 docs: memory limits on the roadmap 2026-10-28 14:58:03 +01:00
Ruben Hensen c380bfc0cf Memory limits from a day of measurements 2026-10-28 14:57:34 +01:00
18 changed files with 75 additions and 6 deletions

No files matched your search

+4
View File
@@ -103,6 +103,8 @@ spec:
requests:
cpu: 70m
memory: 560Mi
limits:
memory: 1536Mi
volumes:
- name: patched-ca-bundle
configMap:
@@ -192,6 +194,8 @@ spec:
requests:
cpu: 100m
memory: 336Mi
limits:
memory: 1Gi
volumes:
- name: patched-ca-bundle
configMap:
+6
View File
@@ -38,16 +38,22 @@ spec:
requests:
cpu: 10m
memory: 48Mi
limits:
memory: 128Mi
cainjector:
resources:
requests:
cpu: 10m
memory: 80Mi
limits:
memory: 256Mi
webhook:
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 128Mi
syncPolicy:
syncOptions:
- CreateNamespace=true
+2
View File
@@ -28,6 +28,8 @@ spec:
requests:
cpu: 10m
memory: 48Mi
limits:
memory: 128Mi
destination:
server: https://kubernetes.default.svc
namespace: cnpg-system
@@ -24,16 +24,22 @@ spec:
requests:
cpu: 20m
memory: 64Mi
limits:
memory: 128Mi
certController:
resources:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 128Mi
webhook:
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 128Mi
destination:
server: https://kubernetes.default.svc
namespace: external-secrets
@@ -21,6 +21,8 @@ spec:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 128Mi
destination:
server: https://kubernetes.default.svc
namespace: cnpg-system
+16 -2
View File
@@ -1,6 +1,6 @@
# Requests from what the components used on 2026-10-25 (kubectl top every
# 5 minutes; highest value plus 10%). No limits until there are daytime
# numbers, see docs/roadmap.md.
# 5 minutes; highest value plus 10%). Memory limits at about twice the
# highest value seen then or on 2026-10-27, rounded up; no CPU limits.
apiVersion: apps/v1
kind: StatefulSet
metadata:
@@ -14,6 +14,8 @@ spec:
requests:
cpu: 150m
memory: 704Mi
limits:
memory: 2560Mi
---
apiVersion: apps/v1
kind: Deployment
@@ -28,6 +30,8 @@ spec:
requests:
cpu: 100m
memory: 128Mi
limits:
memory: 512Mi
---
apiVersion: apps/v1
kind: Deployment
@@ -42,6 +46,8 @@ spec:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 256Mi
---
apiVersion: apps/v1
kind: Deployment
@@ -56,6 +62,8 @@ spec:
requests:
cpu: 20m
memory: 96Mi
limits:
memory: 256Mi
---
apiVersion: apps/v1
kind: Deployment
@@ -70,6 +78,8 @@ spec:
requests:
cpu: 10m
memory: 48Mi
limits:
memory: 128Mi
---
apiVersion: apps/v1
kind: Deployment
@@ -84,6 +94,8 @@ spec:
requests:
cpu: 10m
memory: 48Mi
limits:
memory: 128Mi
---
apiVersion: apps/v1
kind: Deployment
@@ -98,3 +110,5 @@ spec:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 128Mi
+2
View File
@@ -67,6 +67,8 @@ spec:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 512Mi
env:
# Newer boto3 adds checksums that S3-compatible stores can reject;
# the plugin's docs suggest sending them only when required.
+2
View File
@@ -18,6 +18,8 @@ spec:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 1Gi
bootstrap:
initdb:
database: authentik
+7 -2
View File
@@ -341,8 +341,13 @@ Counted 2026-10-25 over the 73 running containers:
requested. Still without requests: Longhorn (22 containers, its chart),
the Vault servers, the LDAP outpost, immich's PG14 cluster and three in
kube-system
- [ ] Memory limits, once there are daytime numbers: the night ones miss
immich's machine learning at work (it idles at 234Mi)
- [x] Memory limits: PR #58, for everything that got requests in #33.
About twice the highest memory from `kubectl top` every 5 minutes from
2026-10-26 22:29 to 2026-10-27 21:55 UTC or the night of #33, rounded
up; no CPU limits. No OOM kills that day. immich's machine learning
sat idle all day (240Mi), so on 2026-10-28 a test image went through
CLIP, face recognition and OCR inside the container: 884Mi with all
three loaded, limit 2Gi
- [x] WordPress (scoutingmbg.nl) was OOMKilled at 08:27:59 UTC on
2026-10-25, its third restart: a crawler asked for 88 pages and assets
within a few seconds (normally ~6 a minute), Apache started a PHP worker
+2
View File
@@ -83,6 +83,8 @@ spec:
requests:
cpu: 50m
memory: 176Mi
limits:
memory: 512Mi
# TCP, because mod_auth_openidc answers 401 to anything that isn't a
# browser.
readinessProbe:
+2
View File
@@ -54,6 +54,8 @@ spec:
requests:
cpu: 20m
memory: 336Mi
limits:
memory: 1Gi
# /api/healthz checks the database and the cache.
readinessProbe:
httpGet:
+8 -2
View File
@@ -67,6 +67,8 @@ spec:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 256Mi
image:
repository: docker.io/valkey/valkey
tag: 9.1.2-alpine@sha256:48332870af354a799964c0012ae1194a0bf2bf894eb508f945810596dc2d8d11
@@ -93,6 +95,8 @@ spec:
requests:
cpu: 100m
memory: 1280Mi
limits:
memory: 3Gi
# Node trusts its built-in roots, which still include the
# ones above the compromised eMudhra intermediates. Use
# patched-ca-bundle through OpenSSL until Node ships a fix.
@@ -117,12 +121,14 @@ spec:
image:
repository: ghcr.io/immich-app/immich-machine-learning
pullPolicy: IfNotPresent
# Idle at night (234Mi); the models take over a GiB when
# it works.
# Idle at 240Mi; 884Mi with CLIP, face recognition and
# OCR loaded (2026-10-28, a test image through each).
resources:
requests:
cpu: 50m
memory: 1Gi
limits:
memory: 2Gi
env:
TRANSFORMERS_CACHE: /cache
HF_XET_CACHE: /cache/huggingface-xet
+2
View File
@@ -71,6 +71,8 @@ spec:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 512Mi
env:
# Newer boto3 adds checksums that S3-compatible stores can reject;
# the plugin's docs suggest sending them only when required.
+2
View File
@@ -13,6 +13,8 @@ spec:
requests:
cpu: 20m
memory: 320Mi
limits:
memory: 1Gi
postgresql:
shared_preload_libraries:
+6
View File
@@ -20,6 +20,8 @@ spec:
requests:
cpu: 10m
memory: 48Mi
limits:
memory: 128Mi
metrics:
enabled: true
serviceMonitor:
@@ -29,6 +31,8 @@ spec:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 128Mi
serviceMonitor:
enabled: false
certController:
@@ -36,6 +40,8 @@ spec:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 128Mi
serviceMonitor:
enabled: false
syncPolicy:
+2
View File
@@ -60,6 +60,8 @@ spec:
requests:
cpu: 10m
memory: 160Mi
limits:
memory: 512Mi
readinessProbe:
httpGet:
path: /login
+2
View File
@@ -7,6 +7,8 @@ injector:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 128Mi
# The chart's default anti-affinity forbids two injector pods on one
# node, so on this single node a rolling update can never start the new
# pod while the old one runs. Recreate removes the old pod first, which
+2
View File
@@ -71,6 +71,8 @@ spec:
requests:
cpu: 10m
memory: 64Mi
limits:
memory: 128Mi
# 512Mi got the server OOMKilled 314 times, including halfway
# through a backup of ~14.7k items.
resources: