Cua

How fast can a microVM Space checkpoint and restore?

A microVM Space restored from a checkpoint to a ready Space in 611 ms (p50, n = 10), and checkpointing the running Space took 695.5 ms, on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.

Measured Build app 0.15.0, cua 0.9.0, cua-spacesd 0.8.0n = 10Raw data (CSV)

Results

p50 times through the cua CLI, serial. Lower is better.

Checkpoint
695.5 ms
Restore
611 ms
Fork a running Space
1.21 s
8 forks at once (wall)
1.54 s
Values shown in the chart
MeasureValue
Checkpoint695.5 ms
Restore611 ms
Fork a running Space1.21 s
8 forks at once (wall)1.54 s
Samples10

Method

Driver on the host: bench/microvm-fork/bench.sh from tag cua-spaces-v0.15.0 with N=10, FANOUT=8, through the release's cua CLI and daemon. Source: a microVM Space (--kind microvm, runtime vz via the bundled cua-vz, 2 vCPU / 2 GiB) that wrote 256 MiB to /dev/shm. Timed (wall time of each CLI command; create/fork return once the Space's cua-spacesd answers with its own token): checkpoint = cua sb checkpoint of the running source (n=10); restore = cua sb fork <checkpoint> to a ready Space (n=10, serial, each deleted); fork_running = cua sb fork <running Space> (n=10); fan-out = 8 forks of one checkpoint at once (wall). Headline = restore p50.

Caveats

  • Host memory added per running fork in the fan-out was ~1,927 MiB (8 forks: +15,419 MiB) for a guest using 295 MiB: forks did not share the checkpoint's memory on this release.
  • Times include the cua CLI process start (a few ms).

Environment and build

MachineMac Studio, Mac14,13 (Mac Studio)
ChipApple M2 Max, 12 cores
Memory96 GB
OSmacOS 26.6.2 (25G83)
Wherelocal
Other vms1
Networkn/a (local)
Kindmicrovm
Imageghcr.io/trycua/linux:24.04-slim
Shape2 vCPU, 2 GiB (runtime vz)
BuildCua Spaces 0.15.0 DMG (https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg, sha256 8725a09ba4132aa8a1667fa48c86416c91d5dec0d3c7dc93f88f5f3e29e0aba0): bundled cua 0.9.0, Helpers/cua-spacesd 0.8.0, cua-vz
App0.15.0
cua0.9.0
cua_spacesd0.8.0

Reproduce

# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:
curl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg
hdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg
mkdir -p ~/bench && ditto "/tmp/cua-dmg/Cua Spaces.app" ~/bench/"Cua Spaces.app" && hdiutil detach /tmp/cua-dmg
git clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua
(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)
export PATH="$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0
RB=~/bench/cua/libs/cua/target/release/examples/rollout_bench
cua daemon start --foreground &
CUA=cua OUT=results N=10 FANOUT=8 bash ~/bench/cua/libs/cua/bench/microvm-fork/bench.sh

Cua commands use the published Cua Spaces 0.15.0 release and the public trycua/cua repository at the tag cua-spaces-v0.15.0. Downloads: samples (CSV), result (JSON), this page as Markdown.

Questions

Do forks share the checkpoint's memory?

Not on this release: each running fork added about 1.9 GB of host memory for a guest using 295 MiB.

Can I run this myself?

Yes. The commands under Reproduce use the published Cua Spaces 0.15.0 release and the public trycua/cua repository at the tag cua-spaces-v0.15.0. A `cua bench run` command that wraps them is coming; it isn't in a release yet.

Checked 2026-10-25. Sources: the samples and result files above, measured by Cua. All benchmarks.

Open in your browser to continue

Sign-in often fails inside this app's built-in browser. Open this page in Safari or Chrome to continue.