Real-host performance report — 2026-07-31

Status: Historical matrix retained; Linux cleanup blockers from that run have been addressed in later Box tips. Numbers below remain the 2026-07-31 capture and are not a fresh all-green requalification.

The matrix ran the real A3S Box 3.2.0 CLI against dedicated-kernel MicroVMs on Linux/KVM and macOS/HVF, plus the shared-kernel Sandbox backend on Linux. It covered lifecycle, exec, idle memory, compute, rootfs/CoW, tmpfs, bind mounts, named volumes, initialization, networking, concurrency, warm pools, snapshot-fork, and TEE simulation.

This was not an all-green qualification at capture time:

LaneSample outcomeCleanup outcomeDecision
Linux/KVM MicroVM + Sandbox preflight181 pass, 1 failSnapshot-fork left 3 shims, 13 mounts, and 13 box directoriesMicroVM data usable; pool cleanup blocked
Linux persistent Sandbox153 pass, 5 fail, 1 skipProcesses, mounts, and box directories returned to zeroCompute/storage usable; bind metadata blocked
Linux foreground Sandbox qualification0 pass, 3 failEvery failed probe required recovery cleanupNo foreground Sandbox performance claim
macOS/HVF MicroVM163 pass, 7 failLeft 9 shims, 13 APFS mounts, and 13 box directoriesCore data usable; TSI and pool cleanup blocked

Host conditions

The Linux measurements came from a shared but lightly loaded A3S OS production host. The benchmark was pinned to CPUs 4–7 with reduced CPU and I/O priority. No global AppArmor or user-namespace security setting was changed.

PropertyLinux/KVM and SandboxmacOS/HVF
HostA3S OS production serverShared local macOS host
OSUbuntu 24.04.1, Linux 6.8.0-49-genericDarwin 25.3.0
CPU8 vCPU, Intel Xeon Ice Lake10-core Apple M2 Pro
Memory31.3 GiB16 GiB
HypervisorKVMHypervisor.framework
PlacementCPUs 4–7No affinity API
Start loadKVM 1.395 / 2.718 / 2.0115.371 / 9.294 / 10.723
Hardware TEENo SEV/TDX deviceNot measured

The macOS lane ran on different hardware under materially higher background load. It is not a KVM-versus-HVF hardware ranking.

Method

Alpine 3.22 was loaded before timed samples. A “cold lifecycle” starts a new execution from the local cached image; it does not include registry pull or image unpack time.

WorkloadParameters
Lifecycle20 samples
Persistent exec30 samples
CPU SHA-256256 MiB × 5
Memory zero-copy512 MiB × 5
Storage I/O256 MiB × 5 per mechanism; writes use conv=fsync
Metadata2,000 create/delete operations × 5
Host HTTP50 requests × 5
Concurrency4 concurrent executions × 5
Warm poolSize 4, 20 acquisitions
Snapshot-forkPool size 4 × 3 fills
TEE simulation10 lifecycles

Latency uses nearest-rank p50 and p95. Throughput uses p50. Failed samples are excluded from aggregates but retained in pass/fail counts.

Lifecycle and execution

MetricLinux/KVM MicroVMLinux persistent SandboxmacOS/HVF MicroVM
Cached cold lifecycle p50 / p952,219 / 2,374 msNo valid foreground data2,199 / 2,322 ms
Detached start p50 / p95—1,016 / 1,119 ms—
Persistent no-op exec p50 / p95113.943 / 114.198 ms113.898 / 114.175 ms128.928 / 181.720 ms
Four-way lifecycle p50 / p954,435 / 4,932 msStart 1,575 / 1,774 ms3,188 / 3,332 ms
Reported idle memory77.625 MiB7.195 MiB129.313 MiB

Sandbox values describe a detached instance kept alive for exec and storage workloads. They must not be presented as a successful foreground run --rm lifecycle.

Compute and storage

p50 throughputLinux/KVM MicroVMLinux SandboxmacOS/HVF MicroVM
SHA-256 stream163.420 MiB/s174.575 MiB/s147.764 MiB/s
Memory zero-copy stream4,491.726 MiB/s4,490.300 MiB/s4,029.118 MiB/s
Synchronous rootfs/CoW write357.750 MiB/s616.447 MiB/s566.902 MiB/s
Synchronous explicit tmpfs write1,194.372 MiB/s1,193.970 MiB/s1,381.892 MiB/s
Synchronous bind-mount write384.751 MiB/s617.505 MiB/s761.056 MiB/s
Synchronous named-volume write333.392 MiB/s700.980 MiB/s744.501 MiB/s

Compute values include a3s-box exec setup in every timed sample. They are not raw guest CPU or memory-bandwidth measurements.

Networking, warm pools, and TEE

MetricLinux/KVMmacOS/HVF
TSI host HTTP, 50 requests5/5; 159.064 req/s0/5
TSI repeated 64 KiB downloads5/5; 12.995 MiB/s4/5; 21.381 MiB/s
Cold pool fill, 4 VMs6,829 ms6,809 ms
Warm acquire p50 / p952,068 / 2,268 ms1,953 / 2,097 ms
Snapshot-fork fill p50 / p95, 4 VMs3,020 / 3,120 ms29,131 / 29,162 ms
Snapshot-fork pool fill rate (from p50)1.325 VM/s0.137 VM/s
Snapshot-fork versus cold fill2.26× faster4.28× slower
Simulated TEE lifecycle p50 / p952,320 / 2,874 ms2,167 / 2,305 ms

The homepage's 1.325 VM/s is derived as 4 VMs ÷ 3.020 seconds. It is a pool-fill rate, not request-serving capacity or unbounded concurrent throughput.

Warm-pool steady state did not preserve the low latency of the first three acquisitions, and snapshot-fork leaked resources on both hosts. The 2.26× value is therefore not an unconditional product claim.

TEE rows use --tee-simulate. The Linux host had no qualifying SEV-SNP or TDX device, so this data cannot prove hardware confidentiality, attestation, or real TEE overhead.

Known blockers

Status as of later Linux tips (post-capture):

  1. Fix foreground Sandbox cgroup-mount and log-drain behavior — addressed for hosts with the setuid OCI launcher and a delegated user cgroup; a local run --rm --isolation sandbox smoke now completes cleanly. Re-run the full lifecycle matrix before publishing new Sandbox performance numbers.
  2. Reclaim every shim, filesystem mount, socket, and box directory after snapshot-fork / warm-pool shutdown on Linux — pool drain now tears down idle VMs and leases, clears snapshot template dirs, and best-effort reaps orphans when destroy fails (including mid-replenish and lease reclaim). macOS/HVF pool leftover cleanup still needs host re-verification.
  3. Fix premature TSI connection closure on macOS/HVF before publishing a network-reliability conclusion.
  4. Run attestation, RA-TLS, seal/unseal, and secret injection on qualifying SEV-SNP hardware. Simulation can never replace hardware evidence.

Return to the platform matrix for backend support boundaries.