Latest QEMU published Ubuntu medians
These warm-cache medians come from the SmolVM benchmark timeline for the published Ubuntu image on June 23, 2026. “Total ready” measures the time until the sandbox control channel is ready. “First command” measures the first command after readiness. “Warm exec” measures repeated command latency.The table above reports the current QEMU microvm benchmark lane. Keep backend-to-backend comparisons separate so each runtime is measured in its representative setup.
Running your own benchmarks
Run the same transport benchmark on your hardware:Performance characteristics
Boot performance
- Sandbox creation: SmolVM allocates names, IPs, disk metadata, and network rules in tens of milliseconds.
- Time to ready: QEMU + vsock reaches readiness in 413.1 ms on the latest published Ubuntu run; QEMU + SSH reaches readiness in 1152.2 ms.
- QEMU microvm default: On Linux x86_64 direct-kernel guests, QEMU uses the smaller
microvmmachine by default. - Hardware virtualization: SmolVM uses KVM on Linux and Hypervisor.framework on macOS for near-native performance.
- Safe boot trims: The default
MICROVM_DIRECTprofile appendstsc=reliable no_timer_check quietto the kernel command line. SetSMOLVM_VERBOSE_BOOT=1to dropquietwhen debugging a stuck boot.
Runtime performance
- Command execution: Warm-command latency is about 1.0 ms on vsock and about 43 ms on SSH.
- File transfer: New guest-agent builds use the newer streaming file-transfer protocol. Only compare transfer numbers after the published image advertises those capabilities.
- Memory overhead: Minimal host overhead beyond configured VM memory (default 512MB).
- CPU efficiency: Hardware virtualization provides near-native CPU performance.
Native helper performance
Thesmolvm-core wheel gives SmolVM Rust-backed helpers for the host operations that happen around each sandbox:
- Networking: TAP setup, route changes, and sysctls can use direct Linux calls when SmolVM has the right permissions.
- Disk I/O: zstd decompression uses a native path, while sparse copy keeps the host’s
cpfast path when it is already best. - QEMU control: Pause, resume, and snapshot control use a native QMP client.
- Firecracker control: Firecracker API socket requests use the native transport.
Check your installed helper capabilities:
Teardown performance
- Graceful shutdown: SmolVM asks the backend to stop cleanly before removing local state.
- Resource Cleanup: Network rules, TAP devices, and disk images are cleaned up automatically
- Fast Path for Ephemeral VMs: SIGKILL-based teardown for sandbox VMs that don’t need state preservation
Optimization tips
1. Reuse VMs for multiple commands
Instead of creating a new VM for each command, reuse the same VM:2. Use appropriate resource allocation
Configure CPU and memory based on your workload:3. Pre-built custom images
For workloads requiring specific dependencies, build a custom rootfs image with pre-installed packages usingImageBuilder:
4. Shared vs isolated disk mode
Choose the appropriate disk mode for your use case: Isolated Mode (default): Each VM gets its own copy of the rootfs- ✅ Complete isolation between VMs
- ✅ No cross-VM contamination
- ❌ Higher disk usage
- ❌ Copy overhead on first boot
- ✅ No disk copy overhead
- ✅ Lower disk usage
- ❌ Changes persist across VMs
- ❌ Potential cross-VM contamination
VMConfig flows where the root filesystem image is read-only for your workload. Keep the default isolated mode for agent sandboxes and anything that writes to the guest disk.
5. Backend selection
SmolVM supports multiple backends with different performance characteristics:- Firecracker (Linux): Low overhead and a narrow device model, recommended for Linux production.
- QEMU (macOS/Linux): Broad compatibility, Windows guest support, and a faster
microvmpath on Linux x86_64. - libkrun: Experimental runtime testing. It does not support snapshots yet.
Performance monitoring
Check VM status
Use the CLI to list all running VMs and their status:Clean up stale VMs
Remove VMs marked as running but whose processes have died:Scalability considerations
IP address pool
By default, SmolVM allocates IPs from172.16.0.2 to 172.16.0.254, supporting 253 concurrent VMs.
SSH port pool
Host-side SSH forwarding uses ports2200-2999, supporting 800 concurrent VMs.
