The stack
Data plane
- Rootfs: per-VM xfs reflink of
/var/lib/podflare/base.ext4. CoW isolated at the xfs block level. - Memory: all VMs MAP_PRIVATE the same
seed.mem→ pages are shared across VMs until first write; dirtied pages are COW to per-VM anonymous memory. - Vsock: one UDS per VM (our patch lets each restored snapshot bind a
fresh path). hostd →
CONNECT 5555→ guest agent.
Control plane
- Warm pool —
pool_managerkeeps N VMs pre-booted via snapshot restore (~12 ms per VM). - Fork — Diff snapshot of parent + reflink seed.mem + rebase-snap merge + spawn N children in parallel.
- Merge — VmHandle swap under the parent’s id.
Substrate
| Component | Choice | Why |
|---|---|---|
| VMM | Firecracker 1.15.1 (patched) | KVM hardware isolation, fast snapshot restore |
| Guest | Ubuntu 24.04 minimal | broad userspace, pre-built stdlib, small enough |
| Guest kernel | Linux 6.1.155 | matches Firecracker CI, UFFD available for Phase 4 |
| Host FS | xfs with reflink=1 | metadata-only CoW for rootfs clones |
| Host OS | Ubuntu 24.04 on Hetzner bare metal | real KVM, no nested-virt tax |
See also
Firecracker fork
The 187-line patch that unlocks concurrent fork
Performance
Every latency number, measured

