From 0266f3330a078ae66fd808fe74a8b284f193b000 Mon Sep 17 00:00:00 2001 From: Jonathan Eid Date: Fri, 21 Aug 2026 10:49:12 -0400 Subject: [PATCH] Give MaxTPSClassic its own resource sizing for one pod per node Splits MaxTPSClassic off SimulatePubnetTier1PerfResources into a new MaxTPSClassicResources case, requesting 1100m/2560Mi instead of 500m/128Mi. Limits are unchanged at 4 cpu / 6000Mi. The cpu request is what enforces one core pod per node; kubelet maxPods cannot, because it is a first-come-first-served admission cap that races the node's DaemonSets. The memory request stops the kubelet electing these pods as its first eviction victims under node pressure. The five other missions on SimulatePubnetTier1PerfResources are untouched. Co-Authored-By: Claude Opus 5 --- src/FSLibrary/MissionMaxTPSClassic.fs | 2 +- src/FSLibrary/StellarKubeSpecs.fs | 6 ++++++ src/FSLibrary/StellarMissionContext.fs | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/FSLibrary/MissionMaxTPSClassic.fs b/src/FSLibrary/MissionMaxTPSClassic.fs index 8aa0cc28..822594b3 100644 --- a/src/FSLibrary/MissionMaxTPSClassic.fs +++ b/src/FSLibrary/MissionMaxTPSClassic.fs @@ -14,7 +14,7 @@ open StellarCoreHTTP let maxTPSClassic (context: MissionContext) = let context = { context with - coreResources = SimulatePubnetTier1PerfResources + coreResources = MaxTPSClassicResources installNetworkDelay = Some(context.installNetworkDelay |> Option.defaultValue true) enableTailLogging = false // Isolate this perf run onto its own nodes so co-tenant pods from diff --git a/src/FSLibrary/StellarKubeSpecs.fs b/src/FSLibrary/StellarKubeSpecs.fs index 027530f1..e84ce3f2 100644 --- a/src/FSLibrary/StellarKubeSpecs.fs +++ b/src/FSLibrary/StellarKubeSpecs.fs @@ -125,6 +125,11 @@ let SimulatePubnetTier1PerfCoreResourceRequirements : V1ResourceRequirements = // and 128MB-2GB RAM. makeResourceRequirements 500 128 4000 6000 +let MaxTPSClassicCoreResourceRequirements : V1ResourceRequirements = + // Sized so one core pod plus the http-proxy fills a 2-vCPU node, since pod + // density dominates the reported max TPS. + makeResourceRequirements 1100 2560 4000 6000 + let ParallelCatchupCoreResourceRequirements : V1ResourceRequirements = // When doing parallel catchup, we give each container // 0.25 vCPUs, 8Gi RAM and 35 GB of disk bursting to 2vCPU, 28Gi (28672Mi) and 40 GB @@ -173,6 +178,7 @@ let GetCoreResourceRequirements (cr: CoreResources) : V1ResourceRequirements = | AcceptanceTestResources -> AcceptanceTestCoreResourceRequirements | SimulatePubnetResources -> SimulatePubnetResources | SimulatePubnetTier1PerfResources -> SimulatePubnetTier1PerfCoreResourceRequirements + | MaxTPSClassicResources -> MaxTPSClassicCoreResourceRequirements | ParallelCatchupResources -> ParallelCatchupCoreResourceRequirements | NonParallelCatchupResources -> NonParallelCatchupCoreResourceRequirements | UpgradeResources -> UpgradeCoreResourceRequirements diff --git a/src/FSLibrary/StellarMissionContext.fs b/src/FSLibrary/StellarMissionContext.fs index c78253c8..680dce1a 100644 --- a/src/FSLibrary/StellarMissionContext.fs +++ b/src/FSLibrary/StellarMissionContext.fs @@ -27,6 +27,7 @@ type CoreResources = | AcceptanceTestResources | SimulatePubnetResources | SimulatePubnetTier1PerfResources + | MaxTPSClassicResources | ParallelCatchupResources | NonParallelCatchupResources | UpgradeResources