Performance

Faster by design.

A full virtual machine with its own kernel, booted in 18 ms. A warm VM handed to a job in 1.2 ms. A saved VM back, mid-program, in 7.8 ms. Fifty VMs running in 125 ms. Measured on macOS, Linux and Windows, x86 and ARM, from laptops to cloud bare metal.

The numbers

Median of 20 runs on each platform, with the 99th percentile in parentheses. Every figure is wall time seen by the caller around the real flash command, except cold boot, which the VMM measures from kernel start to a running guest.

MeasuremacOSLinux x86Linux x86, cloud bare metalLinux ARM, cloud bare metalLinux ARM (Raspberry Pi 5)Windows x86
Cold boot, kernel to running18 ms (19)42 ms (46)42 ms (50)63 ms (64)92 ms (112)212 ms (224)
Create to first command output60 ms (65)71 ms (79)70 ms (72)90 ms (90)94 ms (115)250 ms (262)
Claim a warm VM from a pool2.0 ms2.0 ms1.2 ms1.3 ms3.0 ms6.9 ms
Restore a snapshot to running27 ms (29)26 ms (29)17 ms (20)7.8 ms (8.3)30 ms (32)45 ms (77)
Fork a running VM, child running36 ms (43)45 ms (78)40 ms (64)58 ms (111)166 ms (213)38 ms (69)
Wake a sleeping VM to running27 ms11 ms8.4 ms19 ms31 ms39 ms
Host memory per idle VM (256 MB given)69 MB44 MB45 MB27 MB27 MB42 MB
50 VMs started at once, all running214 ms338 ms125 ms274 ms2.5 s1.0 s

What each number means for you

A fresh VM for every task

An 18 ms cold boot and a 1.2 ms warm claim mean a new, isolated machine costs less time than the request that asked for it. Nothing carries over from one task to the next.

Pick up exactly where you left off

A snapshot restore brings a running program back in 7.8 ms, and a sleeping VM wakes in 8.4 ms. Long-lived agent sessions cost nothing while they wait.

Try many ideas from one setup

A live fork copies a running VM — memory, disk and processes — into a new one in 36 ms, so one expensive setup feeds any number of parallel attempts.

Dense by default

An idle VM given 256 MB uses as little as 27 MB of real host memory, and 50 VMs come up together in 125 ms. One machine runs a fleet.

Security without a speed tax

Per-VM network rules are enforced on every packet outside the guest, at full speed: a 20 MB transfer runs at the same rate with rules on as with rules off — 1,751 vs 1,679 Mbit/s on Linux x86 cloud bare metal, 1,908 vs 1,929 Mbit/s on Linux ARM cloud bare metal, 897 vs 901 Mbit/s on macOS.

Batched storage

The io_uring completion path keeps storage moving efficiently while vCPU limits remain enforced.

Capabilities dropped before the guest runs

Capability removal is synchronous and completes before guest execution, preserving a predictable startup path.