TechCompare LogoTechCompare

Tenki runner benchmarks for Linux and macOS

The supplied Tenki report covers Linux x64 and macOS ARM64, each requested with two vCPUs and 4 GB of RAM. Both use one execution thread with the same protocol 7 workload, five CPU and disk samples, and a 512 MiB cache payload. Linux pins its thread to one logical CPU. The macOS thread can move between CPUs, so the operating system and scheduling behavior remain part of the comparison.

By TechCompare · Updated

Measured configurations
2
CPU execution threads
1
Five accepted samples per runner

Price the requested two-vCPU configuration

Tenki publishes $0.002 per vCPU-minute for Linux x64 and $0.020 for macOS. At two vCPUs, the tested labels therefore cost $0.004 and $0.040 per runner minute before credits and extra storage. The value rankings use the normalized per-vCPU rates. The standard published size ladders reach 16 vCPUs for Linux x64 and eight for macOS. Larger Linux x64 configurations require a separate quote. Those maximum sizes were not measured here.

Keep the tested cache backends separate

Linux verified three save and restore pairs for each of GitHub Actions cache and Tenki hosted Actions cache. Every restore ran in a separate runner job after the publication gap, with an exact key and payload checksum check. macOS verified three GitHub pairs. The best cache score chooses one complete backend for each row, using that same backend for both save and restore speed. Switching to provider archive cache leaves the macOS row without a result.

Read partial network measurements with their source

Both network stages have partial status because some transfers reached the 60-second limit. Protocol 7 still records speed from actual transferred bytes and elapsed time, so the supplied download and upload speeds remain usable. Both runners have three download and three upload samples against Sharktech Amsterdam. These figures describe one HTTP stream to that endpoint. They do not establish the speed of every package registry or the runtime of a complete build.

Calculator

GitHub Actions runner CPU models, single thread CPU scores, disk, cache, and internet scores, and value per USD compute cost. Missing tests have no score.
RunnerCPUSingle threadCPU valueDiskCacheInternetCost/vCPU/minUSDMax vCPU
Tenki macOS arm64

Apple M4 Pro

44,979
2.2M/USD
305.5
43
171.9
0.028
Tenki Linux x64

AMD EPYC 7B13 64-Core

29,356
14.7M/USD
535.6
161.3
142.9
0.00216

Single thread CPU: CoreMark iterations/s. Disk and cache: composite MiB/s. Internet: composite Mbps. Value: score ÷ USD cost/vCPU/min. K means thousand, M means million. Higher is better. Cache uses each runner's best tested cache or artifact backend. Limits: maximum runner vCPU. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1208 (ECB, 2026-10-15).

Open the full GitHub Actions runner benchmark tool

Measurement context

The Linux guest reports AMD EPYC 7B13, while macOS reports Apple M4 Pro. These are the CPU strings from the measured guests. The CPU medians are 29,355.68 and 44,978.82 iterations per second. The macOS result has 17.28% variation across its five accepted samples, compared with 0.42% on Linux. Open the row details for the complete range and compiler.

Verdict

Compare the measured configuration with the platform your workflow needs. Tenki Linux has verified GitHub and native cache results. The macOS report contains GitHub cache only. Its native cache was excluded from this benchmark, so the table leaves that backend unscored.

More runner benchmark scenarios

Frequently asked questions

Are these independent GitHub Actions runner benchmarks?
TechCompare publishes measurements from its own runner benchmark suite. The results come from the supplied published reports, while provider documentation supplies hardware mappings, prices, and available sizes. Scores from provider marketing pages aren't used as test results.
Does a CoreMark score predict my build time?
No. CoreMark is a CPU microbenchmark running one execution thread. A full build also depends on parallelism, memory, disk, dependencies, cache behavior, and queue time. This snapshot doesn't measure complete application builds or queue delays.
How are disk, cache, and internet scores calculated?
Each score is a geometric mean of that runner's own measurements. Disk combines sequential read/write MiB/s with random read/write IOPS converted to MiB/s using the 4 KiB operation size. Cache combines save and restore MiB/s from one backend. By default, each runner uses its highest verified score across tested cache and artifact backends. Hover or open details to see the backend, or select a specific backend type. Internet combines available download and upload Mbps, or uses the single recorded direction. Protocol 7 reports speeds from actual payload bytes and elapsed time, including transfers that reach the time limit. Older timeout records use recorded bytes divided by the nominal limit. These fixed formulas have no ranking reference or upper score limit, so adding a faster runner doesn't change existing scores. CPU keeps its measured CoreMark iterations per second.
How is price per minute per vCPU calculated?
A fixed runner's quoted minute rate is divided by its billed vCPU count. Prices are shown in USD and are list or overage rates before allowances and extras. RunJob publishes EUR consumed CPU rates, which are converted using the dated ECB reference rate shown on the page. Its original rate stays in the details, and memory charges are additional. GitHub uses private standard rates, and Namespace shows overage with prepaid equivalents.
What does CPU value mean?
CPU value is the measured single thread CoreMark score divided by the USD cost per vCPU per minute. More billed vCPUs don't multiply the measured score. EUR compute rates are converted before calculating value, so every provider is in one USD ranking. K means thousand and M means million. Optional disk, cache, and internet value columns use the same score divided by rate formula. These ratios don't measure full build performance or predict the final bill.
Why is an exact CPU model sometimes missing?
Some virtual machines expose only AMD EPYC or aarch64. The table uses a provider mapping where documentation identifies a family, labels that evidence, and leaves undisclosed model numbers unconfirmed. Similar benchmark scores aren't enough to identify a processor.
Are missing tests counted as zero?
No. Internet transfers with a nonzero recorded byte count can supply a speed even if they reach the time limit. A blocked request or a timeout with no recorded bytes stays unscored. Disk uses verified sample medians with all four throughput components. The updated BuildPulse ARM disk result is included using its three completed samples, with the original counts in the details. Cache requires all three verified save and restore pairs. The table shows a dash when no score is available. Hover or open the row details to inspect the measurements.