Skip to content
Latchkey

How to Compare Per-Minute Rates Across Runner Types

Runner cost is per-minute and varies widely by OS and size, so the same job can cost very different amounts depending on where it runs.

Build a rate table for the runner types you use, then place each job on the cheapest runner that can do the work correctly.

Relative cost by runner type

Runner typeRelative per-minute costBest for
Standard LinuxBaseline (1x)Most jobs: lint, unit tests, builds
WindowsAbout 2x LinuxWindows-only builds and tests
macOSAbout 10x LinuxApple platform builds only
Larger Linux (more vCPU)Scales with coresParallelizable heavy builds
GPU runnerHighestML training or GPU test suites only

Pin the cheapest capable runner

.github/workflows/ci.yml
jobs:
  unit:
    runs-on: ubuntu-latest      # baseline rate
  ios-build:
    runs-on: macos-latest       # only where Apple toolchain is required
  gpu-tests:
    runs-on: [self-hosted, gpu] # reserve GPU runners for GPU work

Gotchas

  • Exact prices change; always confirm current rates on the GitHub billing docs before budgeting.
  • GPU and macOS runners are the easiest way to overspend if jobs land there by accident.
  • Larger-runner rates stack on top of the OS tier, they do not replace it.

Related guides

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