linux: run embedded Firecracker with KVM - #17
Conversation
913db59 to
f04f4f1
Compare
|
x86_64 Firecracker/KVM LLVM smoke from GitHub Actions run 27476089745:
The actiond / Linux host Bazel elapsed ratio is 1.039x. Firecracker startup to gRPC readiness is 0.613s. Both measurements use the same Linux x86_64 musl target and host platform, the same warmup target, Bazel's default job count, and matching process counts. The actiond measurement runs first, so the host measurement may benefit from warmer host filesystem caches. The ARM64 release build also passes. The GitHub ARM64 hosted runner does not expose KVM, so the ARM64 job is build-only. For comparison, the QEMU microvm/TCG run on PR #16 is 3,084.336s actiond / 272.311s host (11.327x). Firecracker's actiond time is about 12x faster, but QEMU uses TCG and the measurements came from separate CI runs, so this is not a hypervisor-only comparison. -zbarskybot |
Build Firecracker 1.16.0 with rules_rs for ARM64 and x86_64. Embed Firecracker, the Linux kernel, the initramfs, and the runtime SquashFS in linux-actiond; copy the immutable files to sealed memfds and execute Firecracker with execveat. Keep cas.ext4 as the only persistent file and attach cas.ext4 and the runtime SquashFS as PCI virtio block devices. Proxy REAPI requests through Firecracker's Unix-vsock backend. Add ARM64 and x86_64 release binaries, an x86_64 KVM LLVM smoke comparison against the Linux host, and an ARM64 release build on the GitHub ARM64 runner.
a7acf2b to
48f0cfd
Compare
|
Tested Firecracker
The actiond leg changed by +1.594s (+0.55%), which is within the observed run-to-run variation and provides no measurable improvement. The host leg changed by -18.587s, so the ratio change should not be attributed entirely to PMEM. I removed the PMEM implementation and restored this branch to the successful virtio-blk revision QEMU supports the equivalent configuration with -zbarskybot |
Author: zbarsky-bot
Builds Firecracker 1.16.0 from source with
rules_rsfor ARM64 and x86_64, embeds Firecracker and the immutable VM files inlinux-actiond, copies the immutable files to sealed memfds, and starts Firecracker withexecveat.cas.ext4remains the only persistent file; Firecracker attachescas.ext4and the runtime SquashFS as PCI virtio block devices and exposes REAPI through its Unix-vsock backend.The x86_64 GitHub Actions job compares the LLVM
llvm-tblgenbuild through Firecracker/KVM with the native Linux host. The ARM64 job builds the release binary because the GitHub ARM64 hosted runner does not expose KVM. PR #16 contains the QEMU/TCG implementation for a separate comparison.Validated with one
bazel build --config=remote -c optcommand for both Linux release targets. The remote Firecracker tests and both tool test targets pass;//src:unit_testsstill reproduces the pre-existingcache_service.test.batchReadBlobs returns data or not_found statusReadFailedon the remote worker.