High performance sandbox benchmarks
Compare 11 sandbox providers on one target hardware shape, across real developer, CI/CD, and reinforcement-learning environment workloads.
- Run ID
- 31066359914
- Commit
- cf002382d6be
- Run date
- 2026-08-06
- Target spec
- 4 vCPU · 8 GB · 40 GB
- Replicates
- n = 2 to 12 sandboxes / case
- Providers
- 11 validated
We measured the end-to-end time developers and agents actually experience when using 11 sandbox providers to complete software engineering tasks. Going from a ticket to a PR is a multi-phase workflow, and a sandbox that wins on cold-start time can still lose the pipeline that follows it.
- Real-workload suites: 3 repositories, each run cold on 12 replicate sandboxes through that repository's own CI tasks: clone, install dependencies, lint, typecheck, build. The repositories are Better Auth, Mastra, and OpenClaw.
- Synthetic suites: 10 versioned Phoronix Test Suite profiles. Of those, 8 are industry-standard profiles published through OpenBenchmarking.org. Each suite runs on 3 replicate sandboxes and repeats until Phoronix's own convergence criterion is met. Methodology lists what every suite measures.
Results explorer
Choose a statistic (min, p50, p95, or max), then a real-world pipeline or synthetic benchmark. Bars rank providers best-first against the leader. Hover or focus a row for instance metadata and the raw sample distribution; select it to jump to that metric in the table below.
High performance sandbox benchmarks
Real-world pipelines
s · lower is better · p50
Every environment · target 4 vCPU · 8 GB · 40 GB
Real world · Better Auth · total (Σ task medians) · Metric p50
light to dark = execution order
Precision
Each row shows the single metric with that provider's widest total (min-max) spread, ranked by IDR (p10-p90). The distribution is every trial the run recorded for that metric, pooled across the provider's replicate sandboxes. Phoronix repeats a benchmark several times inside each sandbox, and all of those measurements count, so a row's n is trials rather than sandboxes. Convergence-mode suites repeat until Phoronix settles, which means a noisy sandbox contributes more trials than a quiet one and weighs on the interval accordingly. Metrics that depend on the public Internet, including WAN iperf, repository cloning, and dependency installation, are excluded so the figure reflects sandbox precision; local networking such as iperf loopback remains eligible. The suite and metric vary by provider and are named on every row. Because the units are unlike, every interval is given as a percentage of its own metric's p50. Dots are individual trials and the vertical line marks p50; select Total, IQR, or IDR to highlight and read that range, or hover a row for its numerical endpoints.
Worst precision item per provider
Ranked by IDR (p10-p90) · lower is more precise
- 1
E2B
Real world · Better Auth · typecheck
p50 76.7 s · n=12 trials · 12 sandboxes
IDR spread15.0% - 2
Blaxel
Synthetic · STREAM · Copy
p50 118,960 MB/s · n=58 trials · 3 sandboxes
IDR spread31.1% - 3
microsandbox
Synthetic · fio · rand write 4KB, O_DIRECT (IOPS)
p50 263,500 IOPS · n=6 trials · 3 sandboxes
IDR spread41.6% - 4
Runloop
Synthetic · fio · seq write 1MB, O_DIRECT (IOPS)
p50 2,934 IOPS · n=6 trials · 3 sandboxes
IDR spread62.4% - 5
Daytona (VM)
Synthetic · STREAM · Scale
p50 170,975 MB/s · n=15 trials · 3 sandboxes
IDR spread74.0% - 6
Novita
Synthetic · fio · rand write 4KB, O_DIRECT (MB/s)
p50 433 MB/s · n=6 trials · 3 sandboxes
IDR spread80.1% - 7
Vercel
Synthetic · STREAM · Copy
p50 40,265 MB/s · n=20 trials · 3 sandboxes
IDR spread108% - 8
run.cloud
Synthetic · Node.js web tooling · runs per second
p50 11.77 runs/s · n=45 trials · 3 sandboxes
IDR spread131% - 9
Modal (VM)
Synthetic · iperf3 · loopback TCP, 1 stream
p50 61,652 Mbits/sec · n=6 trials · 3 sandboxes
IDR spread149% - 10
Modal (gVisor)
Synthetic · iperf3 · loopback UDP, 10G objective
p50 169 Mbits/sec · n=6 trials · 3 sandboxes
IDR spread234% - 11
Namespace
Synthetic · Hardlink · throughput
p50 5.25 bogo ops/s · n=6 trials · 3 sandboxes
IDR spread260%
Methodology
Every environment ran the same harness against freshly created sandboxes targeting 4 vCPU · 8 GB RAM · 40 GB disk. Synthetic suites ran on 3 replicate sandboxes each, repeating passes until Phoronix's own convergence criterion was met, so pass counts vary by how noisy the sandbox was; each real repository pipeline (Better Auth, Mastra, and OpenClaw) ran cold on 12 fresh sandboxes, through that repository's own CI tasks. Every figure is a median (p50) pooled across an environment's sandboxes, and every cell keeps the individual trials behind that median, which is what the Precision section reads.
The 10 synthetic suites are described by their own Phoronix test profiles: 8 published on OpenBenchmarking.org, 2 written for this harness and therefore without a profile page to cite.
| Name | Test type | Description | Project site |
|---|---|---|---|
| Flexible IO Testerv2.1.0 | Disk | FIO, the Flexible I/O Tester, is an advanced Linux disk benchmark supporting multiple I/O engines and a wealth of options. FIO was written by Jens Axboe for testing of the Linux I/O subsystem and schedulers. | fio.readthedocs.io |
| Hardlink Throughputharness-local | Disk | Measures hardlink() syscall throughput using the stress-ng --link stressor. Mirrors the per-syscall pattern that pnpm install hits when materialising thousands of node_modules entries from a content-addressable store. Reports bogo ops/sec (real time) — one bogo op = one create+unlink hardlink cycle. | github.com/ColinIanKing |
| Streamv1.3.4 | Memory | This is a benchmark of Stream, the popular system memory (RAM) benchmark. | cs.virginia.edu |
| iPerfv1.2.0 | Network | iPerf is a network bandwidth throughput testing software. This test profile is used for automated testing of an iperf client and requires you have access to an iperf server. | software.es.net |
| iPerf WANharness-local | Network | This test measures sustained WAN TCP throughput with iperf3 against the nearest reachable server from a curated public list, chosen per run by RTT probe. It uses eight parallel streams so that high bandwidth-delay-product paths are not understated, and reports receiver-side goodput. | software.es.net |
| Node.js V8 Web Tooling Benchmarkv1.0.1 | Processor | Running the V8 project's Web-Tooling-Benchmark under Node.js. The Web-Tooling-Benchmark stresses JavaScript-related workloads common to web developers like Babel and TypeScript and Babylon. This test profile can test the system's JavaScript performance with Node.js. | v8.github.io |
| Gitv1.1.0 | System | This test measures the time needed to carry out some sample Git operations on an example, static repository that happens to be a copy of the GNOME GTK tool-kit repository. | git-scm.com |
| PostgreSQLv1.15.0 | System | This is a benchmark of PostgreSQL using the integrated pgbench for facilitating the database benchmarks. | postgresql.org |
| PyBenchv1.1.3 | System | This test profile reports the total time of the different average timed test results from PyBench. PyBench reports average test times for different functions such as BuiltinFunctionCalls and NestedForLoops, with this total result providing a rough estimate as to Python's average performance on a given system. This test profile runs PyBench each time for 20 rounds. | svn.python.org |
| SQLite Speedtestv1.0.1 | System | This is a benchmark of SQLite's speedtest1 benchmark program with an increased problem size of 1,000. | sqlite.org |
- Pipeline totals
- The p50 is the sum of per-task medians, so it exactly matches the task numbers reported beside it. In the Results explorer, min, p95, and max come from end-to-end totals aligned within the same replicate sandbox and trial; task percentiles are never added together.
- A column is a variant, not a vendor
- Modal (gVisor) and Modal (VM) are one account's two runtimes booting the same image. Variants attempted without validated metrics are disclosed under Data quality rather than rendered as empty columns.
- A column is a fleet, not a machine
- Each cell pools an environment's replicate sandboxes, and the environments table flags every provider whose sandboxes reported more than one host CPU model.
- n counts trials, r counts sandboxes
- A convergence-mode cell's n is pooled passes, not sandboxes. A sandbox that converged slowly contributes more passes to the same median. Where a sandbox or a whole suite was lost, the surviving replicates still carry the cell, which is why the replicate count in the summary above is a range (2 to 12) rather than one number; Data quality records every such loss.
- Network figures isolate the sandbox
- iperf3 loopback, using TCP at 1 and 10 streams plus a 10 G-objective UDP datagram test, measures the sandbox's own network stack with no Internet path. The WAN pair measures both directions against the nearest curated public iperf3 server, chosen per run by RTT probe.
- Task names are each repository's own
- Labels come from the dataset's catalog, which uses the repo's names: Better Auth's
lint types(its repo-wide type-lint pass) is a different task from its roottypecheck.
- Benchmark harness and raw results: starslingdev/hpc-sandbox-benchmarks
- Write-up: Beyond cold starts: benchmarking sandboxes for real workloads
- Agent-readable mirror: /hpc-sandbox-benchmarks.md
All metrics
Every catalogued metric this run emitted, labeled and grouped exactly as the dataset's own leaderboard labels it. Each cell shows the median and its ratio to the row's best; amber deepens the further a provider sits behind, teal marks the best. ↓ means lower is better; ∑ marks a value derived from other rows. Click a metric name to open it in the results explorer.
| Metric | Blaxel | Daytona (VM) | E2B | microsandbox | Modal (gVisor) | Modal (VM) | Namespace | Novita | run.cloud | Runloop | Vercel | Spread |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CPU | ||||||||||||
| runs/s ↑headline | 19.75×1.43 | 18.75×1.51 | 11.54×2.45 | 17.26×1.64 | 9.74×2.90 | 17.96×1.57 | 28.25best | 16.65×1.70 | 11.77×2.40 | 10.87×2.60 | 13.44×2.10 | ×2.9 |
| Disk I/O | ||||||||||||
| IOPS ↑headline | 218,000×1.47 | 271,500×1.18 | 47,350×6.78 | 321,000best | 32,200×9.97 | 227,000×1.41 | 256,500×1.25 | 97,100×3.31 | 256,000×1.25 | 165,000×1.95 | 144,000×2.23 | ×10.0 |
| MB/s ↑ | 851×1.48 | 1,060×1.18 | 185×6.78 | 1,255best | 126×10.00 | 888×1.41 | 1,003×1.25 | 380×3.30 | 1,000×1.25 | 644×1.95 | 563×2.23 | ×10.0 |
| IOPS ↑ | 210,000×1.25 | 237,500×1.11 | 48,350×5.45 | 263,500best | 26,350×10.00 | 210,000×1.25 | 248,500×1.06 | 110,850×2.38 | 198,000×1.33 | 156,000×1.69 | 178,000×1.48 | ×10.0 |
| MB/s ↑ | 822×1.25 | 928×1.11 | 189×5.44 | 1,028best | 103×9.98 | 822×1.25 | 970×1.06 | 433×2.37 | 775×1.33 | 610×1.68 | 696×1.48 | ×10.0 |
| IOPS ↑ | 7,667×2.41 | 8,408×2.19 | 599×30.80 | 6,134×3.01 | 18,450best | 1,943×9.50 | 4,075×4.53 | 8,027×2.30 | 5,273×3.50 | 5,759×3.20 | 4,028×4.58 | ×30.8 |
| MB/s ↑ | 7,668×1.02 | 7,810best | 601×12.99 | 6,135×1.27 | – | 1,945×4.02 | 4,076×1.92 | 7,575×1.03 | 4,580×1.71 | 5,760×1.36 | 4,030×1.94 | ×13.0 |
| IOPS ↑ | 5,586×1.05 | 3,996×1.47 | 600×9.78 | 5,864best | 3,079×1.90 | 2,694×2.18 | 2,770×2.12 | 4,207×1.39 | 3,972×1.48 | 2,934×2.00 | 2,627×2.23 | ×9.8 |
| MB/s ↑ | 5,588×1.05 | 3,997×1.47 | 601×9.76 | 5,866best | 3,080×1.90 | 2,696×2.18 | 2,772×2.12 | 4,209×1.39 | 3,974×1.48 | 2,935×2.00 | 2,629×2.23 | ×9.8 |
| bogo ops/s ↑ | 20.24×1.27 | 25.64best | 1.42×18.12 | 9.59×2.67 | 2.86×8.97 | 8.06×3.18 | 5.25×4.89 | 9.27×2.76 | 10.84×2.37 | 14.40×1.78 | 8.29×3.09 | ×18.1 |
| Memory bandwidth | ||||||||||||
| MB/s ↑ | 100,460×1.79 | 179,998best | 49,750×3.62 | 58,538×3.07 | 61,573×2.92 | 68,027×2.65 | 33,772×5.33 | 53,912×3.34 | 30,191×5.96 | 41,196×4.37 | 46,927×3.84 | ×6.0 |
| MB/s ↑ | 118,960×1.73 | 205,776best | 76,198×2.70 | 82,389×2.50 | 90,131×2.28 | 89,690×2.29 | 44,095×4.67 | 74,267×2.77 | 43,125×4.77 | 46,008×4.47 | 40,265×5.11 | ×5.1 |
| MB/s ↑ | 92,836×1.84 | 170,975best | 45,006×3.80 | 49,350×3.46 | 50,664×3.37 | 66,143×2.58 | 30,664×5.58 | 51,397×3.33 | 27,462×6.23 | 38,118×4.49 | 43,506×3.93 | ×6.2 |
| MB/s ↑headline | 100,750×1.79 | 180,452best | 50,072×3.60 | 58,304×3.10 | 58,958×3.06 | 67,409×2.68 | 33,846×5.33 | 53,899×3.35 | 29,869×6.04 | 41,825×4.31 | 47,919×3.77 | ×6.0 |
| Network | ||||||||||||
| Mbits/sec ↑headline | 90,600×1.68 | 73,771×2.06 | 61,269×2.48 | 73,119×2.08 | 15,316×9.92 | 61,652×2.46 | 72,502×2.09 | 151,886best | 53,988×2.81 | 41,171×3.69 | 75,680×2.01 | ×9.9 |
| Mbits/sec ↑ | 124,399×1.24 | 85,968×1.80 | 47,099×3.28 | 74,663×2.07 | 13,806×11.18 | 61,712×2.50 | 66,590×2.32 | 154,342best | 53,453×2.89 | 37,644×4.10 | 71,731×2.15 | ×11.2 |
| Mbits/sec ↑ | 9,999best | 9,999best | 9,999best | 9,999best | 169×59.17 | 9,999best | 9,999best | 9,999best | 9,999best | 9,999best | 9,999best | ×59.2 |
| Mbits/sec ↑ | 2,034×3.51 | 4,070×1.75 | 3,732×1.91 | 4,501×1.59 | 7,140best | 1,657×4.31 | 1,353×5.28 | 4,346×1.64 | 893×8.00 | 1,697×4.21 | – | ×8.0 |
| Mbits/sec ↑ | 2,271×1.83 | 3,754×1.11 | 3,543×1.17 | 1,236×3.37 | 462×9.01 | 4,159best | 2,615×1.59 | 2,237×1.86 | 908×4.58 | 741×5.61 | – | ×9.0 |
| System | ||||||||||||
| s ↓ | 44.0×1.39 | 39.4×1.25 | 66.1×2.09 | 52.6×1.67 | 81.0×2.57 | 47.5×1.50 | 31.6best | 45.5×1.44 | 53.5×1.69 | 82.4×2.61 | 61.6×1.95 | ×2.6 |
| TPS ↑ | 324,111best | 283,102×1.14 | 219,347×1.48 | 228,932×1.42 | 11,157×29.05 | 194,554×1.67 | 253,464×1.28 | 257,168×1.26 | 146,992×2.20 | 98,086×3.30 | 175,220×1.85 | ×29.1 |
| ms ↓ | 0best | 0×1.15 | 0×1.48 | 0×1.42 | 4×29.11 | 0×1.67 | 0×1.28 | 0×1.26 | 0×2.21 | 1×3.31 | 0×1.85 | ×29.1 |
| TPS ↑ | 23,988×1.15 | 15,739×1.75 | 13,890×1.98 | 16,880×1.63 | 1,939×14.19 | 13,351×2.06 | 27,502best | 24,726×1.11 | 8,017×3.43 | 9,565×2.88 | 18,660×1.47 | ×14.2 |
| ms ↓ | 2×1.15 | 3×1.75 | 4×1.99 | 3×1.63 | 26×14.19 | 4×2.06 | 2best | 2×1.11 | 6×3.43 | 5×2.88 | 3×1.47 | ×14.2 |
| ms ↓headline | 482×1.32 | 440×1.21 | 805×2.21 | 500×1.37 | 901×2.47 | 665×1.82 | 365best | 481×1.32 | 814×2.23 | 1,173×3.22 | 770×2.11 | ×3.2 |
| s ↓ | 42.0×1.21 | 34.7best | 72.5×2.09 | 52.4×1.51 | 382.6×11.03 | 63.3×1.82 | 48.6×1.40 | 44.9×1.30 | 66.6×1.92 | 96.9×2.79 | 67.0×1.93 | ×11.0 |
| Real-world pipelines | ||||||||||||
| s ↓ ∑ | 164.0×1.13 | 163.7×1.12 | 300.1×2.06 | 237.9×1.63 | 424.4×2.92 | 206.6×1.42 | 145.6best | 205.5×1.41 | 301.0×2.07 | 407.2×2.80 | 258.0×1.77 | ×2.9 |
| s ↓ | 0.63best | 1.53×2.42 | 1.43×2.28 | 1.63×2.59 | 2.68×4.26 | 0.90×1.44 | 0.97×1.54 | 1.90×3.02 | 1.95×3.09 | 2.08×3.30 | 0.82×1.31 | ×4.3 |
| s ↓ | 11.7best | 13.9×1.18 | 20.2×1.72 | 20.6×1.76 | 35.9×3.06 | 18.8×1.61 | 24.3×2.07 | 15.9×1.36 | 54.9×4.68 | 28.0×2.39 | 19.5×1.66 | ×4.7 |
| s ↓ | 3.22×1.27 | 2.94×1.16 | 5.08×2.00 | 4.03×1.59 | 10.3×4.05 | 3.86×1.52 | 2.54best | 3.79×1.49 | 4.09×1.61 | 6.40×2.52 | 4.28×1.69 | ×4.1 |
| s ↓ | 10.1×1.29 | 10.3×1.32 | 19.0×2.43 | 12.9×1.65 | 28.0×3.58 | 13.0×1.66 | 7.81best | 12.3×1.58 | 16.7×2.14 | 22.4×2.86 | 14.8×1.89 | ×3.6 |
| s ↓ | 2.92×1.37 | 2.86×1.35 | 5.26×2.48 | 3.41×1.61 | 6.35×2.99 | 3.43×1.62 | 2.12best | 3.14×1.48 | 4.36×2.06 | 6.69×3.15 | 4.39×2.07 | ×3.1 |
| s ↓ | 6.85×1.32 | 7.24×1.40 | 13.4×2.59 | 10.00×1.93 | 14.7×2.82 | 8.78×1.69 | 5.19best | 7.93×1.53 | 10.9×2.09 | 16.7×3.22 | 11.1×2.13 | ×3.2 |
| s ↓ | 26.7×1.10 | 24.9×1.02 | 52.3×2.15 | 40.7×1.67 | 101.6×4.17 | 34.1×1.40 | 24.3best | 36.0×1.48 | 48.5×1.99 | 76.8×3.15 | 44.3×1.82 | ×4.2 |
| s ↓ | 2.43×1.18 | 2.46×1.19 | 4.27×2.07 | 3.36×1.63 | 9.41×4.57 | 3.21×1.56 | 2.06best | 3.31×1.61 | 3.41×1.66 | 6.52×3.17 | 3.69×1.79 | ×4.6 |
| s ↓ | 41.5×1.38 | 39.3×1.31 | 76.7×2.56 | 60.4×2.01 | 79.2×2.64 | 50.1×1.67 | 30.0best | 46.1×1.54 | 65.5×2.18 | 100.2×3.34 | 65.4×2.18 | ×3.3 |
| s ↓ | 57.9×1.25 | 58.2×1.26 | 102.5×2.21 | 80.9×1.75 | 136.4×2.95 | 70.3×1.52 | 46.3best | 75.0×1.62 | 90.7×1.96 | 141.5×3.06 | 89.7×1.94 | ×3.1 |
| s ↓ ∑ | 200.6×1.20 | 205.3×1.23 | 367.3×2.20 | 273.0×1.64 | 464.4×2.79 | 260.5×1.56 | 166.7best | 236.9×1.42 | 342.8×2.06 | 457.1×2.74 | 416.6×2.50 | ×2.8 |
| s ↓ | 2.08best | 2.39×1.15 | 3.35×1.61 | 3.08×1.48 | 6.49×3.11 | 2.30×1.10 | 3.74×1.80 | 4.06×1.95 | 3.30×1.58 | 5.43×2.60 | 2.89×1.39 | ×3.1 |
| s ↓headline | 37.8best | 39.0×1.03 | 69.8×1.84 | 58.6×1.55 | 97.2×2.57 | 51.6×1.36 | 40.0×1.06 | 46.8×1.24 | 67.2×1.78 | 92.4×2.44 | 73.9×1.95 | ×2.6 |
| s ↓ | 88.9×1.32 | 93.2×1.39 | 165.8×2.47 | 116.4×1.74 | 189.2×2.82 | 115.0×1.71 | 67.1best | 101.8×1.52 | 150.9×2.25 | 199.8×2.98 | 189.3×2.82 | ×3.0 |
| s ↓ | 71.8×1.29 | 70.7×1.27 | 128.4×2.30 | 94.9×1.70 | 171.5×3.08 | 91.5×1.64 | 55.8best | 84.2×1.51 | 121.4×2.18 | 159.4×2.86 | 150.6×2.70 | ×3.1 |
| s ↓ ∑ | – | 198.5×1.19 | 356.5×2.14 | 268.0×1.61 | 605.5×3.64 | 236.4×1.42 | 166.5best | 243.2×1.46 | 317.3×1.91 | 410.0×2.46 | 335.3×2.01 | ×3.6 |
| s ↓ | 2.37best | 3.55×1.50 | 4.48×1.89 | 4.18×1.76 | 10.3×4.35 | 3.18×1.34 | 6.21×2.62 | 4.18×1.76 | 4.28×1.80 | 6.78×2.86 | 4.11×1.73 | ×4.3 |
| s ↓ | 11.3best | 15.7×1.39 | 19.9×1.77 | 20.3×1.80 | 31.9×2.83 | 18.2×1.62 | 14.7×1.30 | 19.0×1.69 | 21.3×1.89 | 24.3×2.16 | 19.7×1.75 | ×2.8 |
| s ↓ | 61.4×1.19 | 61.7×1.20 | 110.3×2.14 | 89.5×1.74 | 177.8×3.45 | 73.9×1.43 | 51.6best | 69.3×1.34 | 101.7×1.97 | 133.7×2.59 | 111.0×2.15 | ×3.4 |
| s ↓ | 17.3×1.26 | 17.3×1.26 | 37.4×2.72 | 23.0×1.67 | 70.3×5.12 | 20.8×1.52 | 13.7best | 24.3×1.77 | 27.1×1.97 | 36.4×2.65 | 30.1×2.19 | ×5.1 |
| s ↓ | – | 100.3×1.25 | 184.4×2.29 | 131.0×1.63 | 315.2×3.92 | 120.3×1.50 | 80.4best | 126.4×1.57 | 163.0×2.03 | 208.8×2.60 | 170.5×2.12 | ×3.9 |
Observed environments
Specs, storage shape, hardware mixtures, and egress identity come directly from the run's embedded in-sandbox probes and Phoronix metadata. When replicate sandboxes reported different host CPU models, the CPU row shows the fleet count and the disclosure below lists every model. Environment flags mark an off-target resource, gVisor isolation, or a heterogeneous fleet; missing probe values remain blank rather than being filled from another run.
| Spec | Blaxel | Daytona (VM) | E2B | microsandbox | Modal (gVisor) | Modal (VM) | Namespace | Novita | run.cloud | Runloop | Vercel |
|---|---|---|---|---|---|---|---|---|---|---|---|
| vCPUs | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| CPU model | AMD EPYC | AMD EPYC | Intel(R) Xeon(R) Processor @ 2.60GHz | Intel(R) Xeon(R) Processor | unknown | 8 models across replicates ⚠ | AMD EPYC | AMD EPYC | AMD EPYC | 4 models across replicates ⚠ | 2 models across replicates ⚠ |
| Isolation | vm | vm | vm | vm | gvisor | vm | vm | vm | vm | vm | vm |
| Virtualization | firecracker | firecracker | firecracker | libkrun | not-observable | cloud-hypervisor | firecracker | firecracker | firecracker | cloud-hypervisor | firecracker |
| Memory (GB) | 7.78 | 7.78 | 7.77 | 7.78 | 8 | 7.77 | 7.82 | 7.78 | 7.78 | 7.78 | 8.21 |
| Disk (GB) | 39.9 | 39.1 | 104.2 | 39.3 | – | 511 | 63 | 103.6 | 39.3 | 63 | 63.9 |
| File system | xfs | ext4 | ext4 | overlayfs | overlayfs | ext4 | overlayfs | ext4 | ext4 | ext4 | xfs |
| Mount options | allocsize=64k,attr2,inode64,lazytime,logbsize=256k,logbufs=8,noatime,nodiratime,noquota,rw | relatime,rw | discard,relatime,rw | – | – | discard,noatime,prjquota,rw | – | relatime,rw | relatime,rw | noinit_itable,relatime,rw | attr2,inode64,logbsize=32k,logbufs=8,noquota,nouuid,relatime,rw |
| I/O scheduler | MQ-DEADLINE | – | – | – | – | – | – | – | – | NONE | MQ-DEADLINE |
| Block size | 4096 | 4096 | 4096 | – | – | 4096 | – | 4096 | 4096 | 4096 | 4096 |
| Kernel | 6.1.166 | 6.19.14 | 6.1.158+ | 6.12.98 | 4.19.0-gvisor | 6.12.8+ | 7.0.1 | 6.1.158+ | 6.18.36+ | 6.18.32 | 6.12.76 |
| OS | Debian GNU/Linux 12 (bookworm) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) | Debian GNU/Linux 13 (trixie) |
| Egress family | IPv6 | IPv4 | IPv4 | IPv4 | IPv4 | IPv4 | IPv4 | IPv4 | IPv4 | IPv4 | IPv4 |
| Egress ASN | AS396356 | AS396356 | AS396982 | AS396982 | AS8075 | AS31898 | AS401483 | AS31898 | AS24940 | AS16509 | AS16509 |
| ASN name | Latitude.sh | Latitude.sh | Google LLC | Google LLC | Microsoft Corporation | Oracle Corporation | Namespace Labs | Oracle Corporation | Hetzner Online GmbH | Amazon.com, Inc. | Amazon.com, Inc. |
| Geo location | Ashburn, Virginia, US | Los Angeles, California, US | The Dalles, Oregon, US | Dallas, Texas, US | San Antonio, Texas, US | Ashburn, Virginia, US | Leesburg, Virginia, US | Phoenix, Arizona, US | Helsinki, Uusimaa, FI | Columbus, Ohio, US | – |
| Spec vs target | matched | matched | matched | matched | matched | matched | matched | matched | matched | matched | matched |
⚠ Heterogeneous fleets: Modal (VM) saw 8 host CPU models across its replicate sandboxes (AMD EPYC 9455 48-Core Processor; AMD EPYC 9455P 48-Core Processor; AMD EPYC 9554 64-Core Processor; AMD EPYC 9554P 64-Core Processor; AMD EPYC 9654 96-Core Processor; AMD EPYC 9J45 128-Core Processor; Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz; Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz) · Runloop saw 4 host CPU models across its replicate sandboxes (Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz; Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz; Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz; Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz) · Vercel saw 2 host CPU models across its replicate sandboxes (Intel(R) Xeon(R) Processor @ 2.50GHz; Intel(R) Xeon(R) Processor @ 2.90GHz). Every median for each of these environments pools across those machines, so read their cells as the fleet's typical draw, not one machine's speed.
Data quality
Only providers marked validated by the dataset render as comparison columns. Every skipped or failed suite record below comes from this run, including universally unrecorded tasks and provider-specific failures; no older run fills a missing cell. Providers attempted without any validated metrics are disclosed after the table instead of becoming empty comparison columns.
| Provider | Suite | Outcome | Reason |
|---|---|---|---|
| Blaxel | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Blaxel | realworld-openclaw | failed | PTS ran but every trial failed for 4 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_types (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| Daytona (VM) | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Daytona (VM) | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| E2B | pgbench | failed | Step "clone repo" failed with exit code 128 |
| E2B | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| E2B | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| microsandbox | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| microsandbox | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| Modal (gVisor) | disk | failed | PTS duplicate-value dedup dropped 1 fio twin result (MB/s == IOPS at this block size, so the duplicate-valued <Result> was never written): fio_type_sequential_read_engine_linux_aio_direct_yes_block_size_1mb_job_count_1_disk_target_default_test_directory_mb_per_s (twin survived in disk/pts_fio-seq-read.xml) |
| Modal (gVisor) | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Modal (gVisor) | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| Modal (gVisor) | realworld-openclaw | failed | Step "mise run benchmark:realworld:pts:openclaw" lost its sandbox: 12 consecutive detached polls failed (last: done-file fs exists) — the sandbox stopped responding, not a quiet long step |
| Modal (VM) | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Modal (VM) | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| Namespace | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Namespace | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| Novita | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Novita | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| run.cloud | disk | failed | PTS duplicate-value dedup dropped 1 fio twin result (MB/s == IOPS at this block size, so the duplicate-valued <Result> was never written): fio_type_sequential_read_engine_linux_aio_direct_yes_block_size_1mb_job_count_1_disk_target_default_test_directory_mb_per_s (twin survived in disk/pts_fio-seq-read.xml) |
| run.cloud | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| run.cloud | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| run.cloud | realworld-openclaw | failed | Step "mise run benchmark:realworld:pts:openclaw" lost its sandbox: 12 consecutive detached polls failed (last: done-file cat poll) — the sandbox stopped responding, not a quiet long step |
| Runloop | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Runloop | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
| Vercel | network | failed | pts_iperf-wan-download: pts_iperf-wan-download did not produce 1 numeric metric value(s) |
| Vercel | network | failed | pts_iperf-wan-upload: PTS batch-run of local/iperf-wan-1.0.0 completed but every trial errored (composite carries no values) |
| Vercel | network | failed | Step "mise run benchmark:network:suite" failed with exit code 1 |
| Vercel | realworld-mastra | failed | PTS ran but every trial failed for 1 of 5 declared metrics: realworld_mastra_task_test_core (realworld-mastra/pts_realworld-mastra.xml) — attempted, no value recorded |
| Vercel | realworld-openclaw | failed | PTS ran but every trial failed for 3 of 8 declared metrics: realworld_openclaw_task_lint_oxlint (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_shrinkwrap_check (realworld-openclaw/pts_realworld-openclaw.xml), realworld_openclaw_task_test_unit_fast (realworld-openclaw/pts_realworld-openclaw.xml) — attempted, no value recorded |
Also in this run, not in the tables above: Daytona (container): pending, 0 metrics reported; microsandbox (local): pending, 0 metrics reported. An environment that reported nothing gets no column.