How to Use a Warm Pool to Cut Runner Cold Starts
A warm pool keeps a few runners idle-ready so the first job of a burst starts without waiting for a boot.
Scale-to-zero saves money but adds cold-start latency. A warm pool keeps a small number of runners already registered and idle so bursts start instantly. In ARC this is minRunners; in VM fleets it is a minimum pool size. Tune the pool size against your latency budget and idle cost.
Steps
- Estimate your typical burst size and the cold-start time you want to hide.
- Set a small warm floor (ARC
minRunners, or a VM minimum pool). - Let the autoscaler burst above the floor and drain back to it when idle.
ARC warm floor
values.yaml
minRunners: 3 # keep 3 idle runners ready for instant starts
maxRunners: 60 # burst ceilingGotchas
- A warm pool costs money while idle; size it to the smallest floor that hides your worst cold start.
- Warm runners should still be ephemeral, replaced after each job, to keep isolation.
Related guides
How to Scale Self-Hosted Runners to Zero When IdleCut idle CI cost by scaling self-hosted runners to zero when no jobs are queued, using ARC minRunners 0 or an…
How to Control Self-Hosted Runner CostKeep self-hosted runner bills predictable with an idle timeout, a hard max-runners ceiling, spot instances, a…