How to Right-Size a Runner to Cut Both Cost and Time
Right-sizing means matching each job to the smallest runner that runs it fast enough: oversized runners waste money, undersized ones waste time.
There is rarely one correct runner for a whole pipeline. Lint and unit tests fit a standard runner; parallel e2e or native compiles may earn a larger one. Size per job, not per repo.
Size per job, not per repo
jobs:
lint:
runs-on: ubuntu-latest # cheap, fast, no need for more
unit:
runs-on: ubuntu-latest
e2e:
runs-on: ubuntu-latest-8-cores # parallel suite that scales with coresThe right-sizing loop
Benchmark, pick the smallest size that hits your target duration, and recheck when the workload changes. Watch for both waste (a big runner mostly idle) and strain (OOM or timeouts on a small one).
Where more savings hide
Caching, path filters, and cancelling superseded runs often cut cost more than any runner-size change. Managed runners can further lower the per-minute rate, but fix the workload first so you are not paying to run wasted work faster.