Skip to content
Latchkey

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

.github/workflows/ci.yml
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 cores

The 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.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →