[All application workloads](https://rackcensus.com/workloads)
# GitHub self-hosted runner benchmarks

A pinned build and test workflow with separate cold and warm dependency caches.

Capacity is the highest tested load that met the correctness, latency, and error limits in every repeat. Only matching recipes from the past 90 days are compared.

Filters 12 plans by location

## Filters

| Provider, plan and location | Median cold + warm pairs/hour | Provision range | Evidence | Plan price | Capacity / USD | p95 range | p95 variation |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Vultr · High Performance AMD 1 vCPU / 1 GB · Los Angeles, US | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/6adwbk-vultr-high-performance-amd-1-vcpu-1-gb-lax-benchmark) | 6.0 USD/month | Unavailable | Unavailable | Insufficient evidence |
| Linode · Nanode 1GB · London 2, UK | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/9tp5km-linode-nanode-1gb-gb-lon-benchmark) | 5.0 USD/month | Unavailable | Unavailable | Insufficient evidence |
| UpCloud · Starter 1 vCPU / 1 GB · Sydney #1 | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/c2e4cw-upcloud-starter-1-vcpu-1-gb-au-syd1-benchmark) | 3.5 EUR/month | Unavailable | Unavailable | Insufficient evidence |
| UpCloud · Premium 1 vCPU / 1 GB · San Jose #1 | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/bvmvau-upcloud-premium-1-vcpu-1-gb-us-sjo1-benchmark) | 6.0 EUR/month | Unavailable | Unavailable | Insufficient evidence |
| Amazon Lightsail · Nano, 1 TB transfer · Virginia (us-east-1) | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/k3j279-lightsail-nano-1-tb-transfer-us-east-1-benchmark) | 5.0 USD/month | Unavailable | Unavailable | Insufficient evidence |
| Amazon Lightsail · Memory Optimized 2Xlarge, 7 TB transfer · Virginia (us-east-1) | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/ultt2b-lightsail-memory-optimized-2xlarge-7-tb-transfer-us-east-1-benchmark) | 294.0 USD/month | Unavailable | Unavailable | Insufficient evidence |
| Amazon Lightsail · Compute Optimized Large, 5 TB transfer · Frankfurt (eu-central-1) | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/zk2za7-lightsail-compute-optimized-large-5-tb-transfer-eu-central-1-benchmark) | 42.0 USD/month | Unavailable | Unavailable | Insufficient evidence |
| Amazon Lightsail · Compute Optimized Large, 5 TB transfer · Oregon (us-west-2) | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/rd6qmt-lightsail-compute-optimized-large-5-tb-transfer-us-west-2-benchmark) | 42.0 USD/month | Unavailable | Unavailable | Insufficient evidence |
| NODED.CLOUD · VPS I KVM · Bulgaria | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/fgkt33-noded-vps-i-kvm-bulgaria-benchmark) | 5.5 EUR/month | Unavailable | Unavailable | Insufficient evidence |
| K.N · Lite 1 vCPU / 1 GB · Frankfurt | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/igeas4-koanode-lite-1-vcpu-1-gb-de-fra-benchmark) | 4.99 USD/month | Unavailable | Unavailable | Insufficient evidence |
| Gcore · Standard G0 1 vCPU / 2 GB · Sao Paulo | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/7vwupm-gcore-standard-g0-1-vcpu-2-gb-92-benchmark) | 22.464 EUR/month | Unavailable | Unavailable | Insufficient evidence |
| VPSServer.com · 1A 1GB 20GB · Atlanta | No qualifying load | No qualifying measurement | 0/1 provisions met the workload limits · preliminary [Latest run](https://rackcensus.com/benchmarks/tv7zdv-vpsserver-1a-1gb-20gb-us-at-benchmark) | 4.0 USD/month | Unavailable | Unavailable | Insufficient evidence |

Value uses the lowest qualifying capacity observed across provisions and the current USD plan price. A failed provision prevents a value score or a match for required capacity. Results remain preliminary until at least five provisions span 24 hours. Plan prices exclude optional services and any unpriced extras; other currencies are shown without an assumed exchange rate.

Each CI job completes a cold and a warm build-and-test pass. Capacity is completed pairs per hour; consistency uses elapsed job time with one job at a time. Checkout and tool setup are included, and queue wait is excluded. Cold and warm stage times are recorded separately.

## Consistency across locations

Compare the same provider and plan across locations. The gap is the difference between the fastest and slowest median p95 latencies at the reference load, divided by the fastest. Every location needs five qualifying provisions spanning 24 hours.

| Provider and plan | Locations | Location gap |
| --- | --- | --- |
| Amazon Lightsail · Compute Optimized Large, 5 TB transfer | 2 | Insufficient evidence |

### Test recipe and limits

```
{
"revision": 1,
"images": {
"runner": {
"ref": "ghcr.io/actions/actions-runner@sha256:4ffadc0002b2581327e06101fc8c06cd189232baf79fe561fac9caeb76f5e807",
"source": "ghcr.io/actions/actions-runner:latest, resolved 2026-10-18"
},
"redis": {
"ref": "ghcr.io/rackcensus/redis@sha256:6e9101032a2126aeeb4b1e862ac77d2fcf26b831ae37e5ff2e69169f82ddd411",
"compressed_bytes": 55575867,
"unpacked_bytes": 145969869
}
},
"minimum_memory_mb": 8192,
"unit": "cold + warm pairs/hour",
"dataset": {
"cache_modes": [
"cold",
"warm"
],
"concurrency": 1,
"source_commit": "fcbb99c43d0550dc045ce701b53ae0d69afecf46",
"node_version": "22.20.0"
},
"slo": {
"p95_ms": 3600000,
"p99_ms": 3600000,
"max_error_rate": 0.01,
"min_completion_ratio": 0.99,
"max_driver_cpu_ratio": 0.85,
"max_scheduler_lag_ms": 50
},
"measurement_kind": "batch",
"capacity_multiplier": 3600,
"key": "github_runner",
"rates": [
1
],
"warmup_seconds": 0,
"duration_seconds": 1,
"repeats": 2,
"timeout_seconds": 3600,
"max_inflight": 1,
"name": "GitHub self-hosted runner",
"description": "A pinned build and test workflow with separate cold and warm dependency caches.",
"profile": "full",
"implementation_sha256": "83f66245883ae11c4365d0236280954685db52fbfc45fac23ee39c6a077767ae",
"architecture": "linux/amd64",
"github": {
"configured": false,
"error": "set RUNNER_BENCHMARK_REPOSITORY and RUNNER_BENCHMARK_REVISION to the repository and commit hosting benchmark-runner.yml"
},
"digest": "e7601bedf450f2c1f11a2917d736ce07ffee72fa1e427c908572c1d3343eb27d"
}
```
