{
  "slug": "snapshot-running-sandbox",
  "question": "How fast can you snapshot a running Space?",
  "answer": "Checkpointing a running Space that holds 300 MB in RAM and 100 MB on disk took 532.8 ms for a QEMU VM and 274.3 ms for a gVisor container (p50, n = 10 each) on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25. The Space kept running.",
  "status": "measured",
  "url": "https://cua.ai/benchmarks/snapshot-running-sandbox",
  "csv": "https://cua.ai/benchmarks/snapshot-running-sandbox.csv",
  "markdown": "https://cua.ai/benchmarks/snapshot-running-sandbox.md",
  "group": "Fork and snapshot",
  "series": [
    {
      "label": "QEMU VM",
      "run": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "checkpoint.vm",
        "slug": "snapshot-running-sandbox",
        "metric": "checkpoint_ms",
        "value": 532.8,
        "unit": "ms",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 532.8,
          "p90": 977.7,
          "p95": 1200.7,
          "p99": 1200.7,
          "min": 429.1,
          "max": 1200.7
        },
        "extra": {},
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:16:30Z",
        "build": {
          "cua": "0.9.0",
          "cua_spacesd": "0.8.0",
          "app": "0.15.0",
          "source": "Cua 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",
          "published": true,
          "harness": "built from tag cua-spaces-v0.15.0 (709b18d9ee) on the host: cargo build --release -p cua-sdk --example rollout_bench --example channel_bench (Rust 1.97.1)"
        },
        "host": {
          "name": "Mac Studio",
          "model": "Mac14,13 (Mac Studio)",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2 (25G83)",
          "where": "local"
        },
        "environment": {
          "load_avg_before": [
            1.35,
            3.21,
            7.88
          ],
          "other_vms": 1,
          "network": "n/a (local)",
          "kind": "vm",
          "image": "ghcr.io/trycua/linux:24.04-slim",
          "shape": "QEMU Linux VM, 2 vCPU / 2 GiB, --forkable, headless"
        },
        "method": "Driver on the host: `rollout_bench checkpoint` (Rust SDK, built from the tag). The running Space (QEMU Linux VM, 2 vCPU / 2 GiB, --forkable) holds a world of 300 MB random data in /dev/shm and a 100 MB file on disk. Each sample = one `Sandboxes.checkpoint(space, name)` call of the running Space, start to return (the Space keeps running). n=10, serial, same source; the first QEMU checkpoint was pinned (fork source).",
        "reproduce": "# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:\ncurl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg\nhdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg\nmkdir -p ~/bench && ditto \"/tmp/cua-dmg/Cua Spaces.app\" ~/bench/\"Cua Spaces.app\" && hdiutil detach /tmp/cua-dmg\ngit clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua\n(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)\nexport PATH=\"$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH\" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0\nRB=~/bench/cua/libs/cua/target/release/examples/rollout_bench\ncua daemon start --foreground &\n$RB create --prefix fsrc- --n 1 --kind vm --cpus 2 --memory-mb 2048 --headless --forkable --keep\ncua sb exec fsrc-0 'dd if=/dev/urandom of=/dev/shm/state bs=1M count=300; dd if=/dev/urandom of=$HOME/state.bin bs=1M count=100; sync'\nfor i in $(seq 1 10); do $RB checkpoint --source fsrc-0 --name ckq-$i; done",
        "caveats": [
          "The first QEMU checkpoint (pinned, 978 ms) is included."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "gVisor container",
      "run": {
        "run": "2026-10-25/result-gvisor",
        "schema": "cua.bench-result/v1",
        "bench": "checkpoint.gvisor",
        "slug": "snapshot-running-sandbox",
        "metric": "checkpoint_ms",
        "value": 274.3,
        "unit": "ms",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 274.3,
          "p90": 305.9,
          "p95": 310.6,
          "p99": 310.6,
          "min": 257.9,
          "max": 310.6
        },
        "extra": {},
        "samples_csv": "samples-gvisor.csv",
        "measured_at": "2026-10-25T01:16:30Z",
        "build": {
          "cua": "0.9.0",
          "cua_spacesd": "0.8.0",
          "app": "0.15.0",
          "source": "Cua 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",
          "published": true,
          "harness": "built from tag cua-spaces-v0.15.0 (709b18d9ee) on the host: cargo build --release -p cua-sdk --example rollout_bench --example channel_bench (Rust 1.97.1)"
        },
        "host": {
          "name": "Mac Studio",
          "model": "Mac14,13 (Mac Studio)",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2 (25G83)",
          "where": "local"
        },
        "environment": {
          "load_avg_before": [
            1.35,
            3.21,
            7.88
          ],
          "other_vms": 1,
          "network": "n/a (local)",
          "kind": "gvisor",
          "image": "ghcr.io/trycua/linux:24.04-slim",
          "shape": "gVisor container, 2 vCPU / 2 GiB, headless"
        },
        "method": "Driver on the host: `rollout_bench checkpoint` (Rust SDK, built from the tag). The running Space (gVisor container, 2 vCPU / 2 GiB) holds a world of 300 MB random data in /dev/shm and a 100 MB file on disk. Each sample = one `Sandboxes.checkpoint(space, name)` call of the running Space, start to return (the Space keeps running). n=10, serial, same source; the checkpoints were deleted at the end.",
        "reproduce": "# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:\ncurl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg\nhdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg\nmkdir -p ~/bench && ditto \"/tmp/cua-dmg/Cua Spaces.app\" ~/bench/\"Cua Spaces.app\" && hdiutil detach /tmp/cua-dmg\ngit clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua\n(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)\nexport PATH=\"$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH\" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0\nRB=~/bench/cua/libs/cua/target/release/examples/rollout_bench\ncua daemon start --foreground &\n$RB create --prefix fsrc- --n 1 --kind vm --cpus 2 --memory-mb 2048 --headless --forkable --keep\ncua sb exec fsrc-0 'dd if=/dev/urandom of=/dev/shm/state bs=1M count=300; dd if=/dev/urandom of=$HOME/state.bin bs=1M count=100; sync'\n$RB create --prefix gsrc- --n 1 --kind container --runtime gvisor --cpus 2 --memory-mb 2048 --headless --keep\n# same world as above in gsrc-0, then:\nfor i in $(seq 1 10); do $RB checkpoint --source gsrc-0 --name ckg-$i; done",
        "caveats": [
          "What a gVisor checkpoint stores follows the runtime's checkpoint support; it wasn't inspected here."
        ],
        "sources": [],
        "status": "measured"
      }
    }
  ]
}
