启动一个可用环境要等多久?¶
主要结论¶
已准备环境下,pVisor host 和 staged 的首条输出分别为 12.72 ms 和 25.13 ms;在 Linux/KVM、2 vCPU / 128 MiB 条件下,pVisor VM 为 100.91 ms,快于使用 Fedora 完整内核的 Firecracker(285.04 ms)、QEMU(702.98 ms)和 microvm(321.56 ms)。
| 需求 | 选型含义 |
|---|---|
| 频繁执行短命令 | host 和 staged 的启动等待为十几到几十毫秒 |
| 频繁创建一次性 VM | pVisor VM 的首条命令等待约 0.1 秒 |
| 完整 Agent 工具任务 | 结合工具与修复任务结果选择执行模式 |
Motivation¶
频繁创建一次性环境时,首条命令的等待会累积。选择 host、staged、容器或 VM,需要知道各模式的启动等待,以及隔离需求带来的成本。短任务还要预算退出和工具执行。
实验设计¶
Linux x86_64 / KVM,AMD Ryzen 7 9700X,Fedora 宿主。对照为 native、pVisor host、pVisor staged、pVisor VM、Docker rootless / overlay2、Firecracker PCI、QEMU q35 和 QEMU microvm。进程固定到 CPU 0,1,VM 均为 2 vCPU / 128 MiB;进程和容器不设内存上限。
Firecracker、QEMU 和 microvm 使用 Fedora 的完整发行版内核,Linux 7.2.8-200.fc44.x86_64。pVisor 的虚拟化基于 libkrun,使用该项目配套 libkrunfw 的定制内核,Linux 6.12.109。
使用已准备的用户态环境和相同的 /bin/sh 输出探针,每次执行使用新环境与私有工作区,VM 每次重新启动,不使用快照或环境池。热页缓存,每组 3 次预热、60 次正式样本,组内随机交替执行。环境准备和输入复制不计入启动时间。内核、设备和存储路径不同,结果反映各配置的完整启动成本;这个探针不代表完整发行版开机、冷镜像、Agent CLI 初始化、并发容量或快照恢复。
Ready 截止到校验后的首条 shell 标记;Exit 包含执行和收尾,要求正确输出并正常零退出。Firecracker 在校验标记和结果、确认无 panic 后受控终止,只报告 Ready。失败、panic、输出不匹配或制品改变的样本不计入耗时分布;保留有效慢样本。
实验数据和分析¶
启动与退出耗时¶
单位为 ms,每组 N=60,正式失败均为 0。进程/容器与 VM 分别采样,各行保留自己的统计值;四种 VM 在同组内随机交替执行。P95 仅供分布观察,不是稳定尾延迟保证。
| Runtime | Valid / failed | Ready P50 ms | Ready P95 ms | Exit P50 ms | Exit P95 ms |
|---|---|---|---|---|---|
| Native | 60 / 0 | 1.28 | 1.71 | 1.35 | 1.82 |
| pVisor host | 60 / 0 | 12.72 | 14.18 | 24.03 | 24.71 |
| pVisor staged | 60 / 0 | 25.13 | 26.85 | 33.84 | 44.55 |
| pVisor VM | 60 / 0 | 100.91 | 151.27 | 141.52 | 176.59 |
| Docker | 60 / 0 | 74.48 | 87.13 | 98.29 | 110.22 |
| Firecracker | 60 / 0 | 285.04 | 291.88 | — | — |
| QEMU | 60 / 0 | 702.98 | 789.36 | 725.55 | 818.85 |
| microvm | 60 / 0 | 321.56 | 404.39 | 347.99 | 428.27 |
host 和 staged 的等待为十几到几十毫秒,适合频繁启动的短命令。VM 需要额外的内核和设备初始化;选择隔离方式时,应结合完整任务耗时,而不是只看启动。Firecracker 的空白 Exit 表示未测正常关机。
| VM 对照 | pVisor 减少的等待 ms | 差异的 95% 区间 ms | 等待减少 | 对照耗时 / pVisor 耗时 |
|---|---|---|---|---|
| Firecracker | 184.12 | 181.60–185.84 | 64.6% | 2.82× |
| QEMU | 602.06 | 582.17–635.99 | 85.6% | 6.97× |
| microvm | 220.64 | 195.91–251.74 | 68.6% | 3.19× |
差异为两组中位数之差;对匹配轮次做 5,000 次配对 bootstrap 得到 95% 区间。三个区间均不含零,支持这些配置下 pVisor VM 启动更快。专用固件和精简初始化提供较短的启动路径;这个对照不能分别量化内核、文件系统和 VMM 的贡献。
冷镜像的客户端等待与内容下载见独立的镜像按需启动实验;镜像服务准备成本单列,样本不与这里的预准备环境合并。
数据下载与复现¶
启动统计 · VM 差异与 95% 区间 · VM 源码与制品来源 · 比较方法 · 复现手册。二进制、完整输入和原始日志保留在本地忽略的 .data/;CSV 保留统计来源与样本数,来源记录保留 CPU/RAM 配置、报告和制品摘要。