From d2f534fd822fda817fa4cd3d941852f6c5559f52 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Mon, 15 Sep 2025 15:02:47 +0100 Subject: [PATCH] feat(supervisor): add optional memory limit overhead --- apps/supervisor/src/env.ts | 1 + apps/supervisor/src/workloadManager/kubernetes.ts | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/supervisor/src/env.ts b/apps/supervisor/src/env.ts index 99cb16425b..6d6bbd27d6 100644 --- a/apps/supervisor/src/env.ts +++ b/apps/supervisor/src/env.ts @@ -89,6 +89,7 @@ const Env = z.object({ KUBERNETES_CPU_REQUEST_RATIO: z.coerce.number().min(0).max(1).default(0.75), // Ratio of CPU limit, so 0.75 = 75% of CPU limit KUBERNETES_MEMORY_REQUEST_MIN_GB: z.coerce.number().min(0).default(0), KUBERNETES_MEMORY_REQUEST_RATIO: z.coerce.number().min(0).max(1).default(1), // Ratio of memory limit, so 1 = 100% of memory limit + KUBERNETES_MEMORY_OVERHEAD_GB: z.coerce.number().min(0).optional(), // Optional memory overhead to add to the limit in GB // Placement tags settings PLACEMENT_TAGS_ENABLED: BoolEnv.default(false), diff --git a/apps/supervisor/src/workloadManager/kubernetes.ts b/apps/supervisor/src/workloadManager/kubernetes.ts index 55281c56a6..0f5e89c80a 100644 --- a/apps/supervisor/src/workloadManager/kubernetes.ts +++ b/apps/supervisor/src/workloadManager/kubernetes.ts @@ -25,6 +25,7 @@ export class KubernetesWorkloadManager implements WorkloadManager { private readonly cpuRequestRatio = env.KUBERNETES_CPU_REQUEST_RATIO; private readonly memoryRequestMinGb = env.KUBERNETES_MEMORY_REQUEST_MIN_GB; private readonly memoryRequestRatio = env.KUBERNETES_MEMORY_REQUEST_RATIO; + private readonly memoryOverheadGb = env.KUBERNETES_MEMORY_OVERHEAD_GB; constructor(private opts: WorkloadManagerOptions) { this.k8s = createK8sApi(); @@ -319,9 +320,13 @@ export class KubernetesWorkloadManager implements WorkloadManager { } #getResourceLimitsForMachine(preset: MachinePreset): ResourceQuantities { + const memoryLimit = this.memoryOverheadGb + ? preset.memory + this.memoryOverheadGb + : preset.memory; + return { cpu: `${preset.cpu}`, - memory: `${preset.memory}G`, + memory: `${memoryLimit}G`, }; }