Hotdry.

Article

亚秒级冷启动微VM设计:裁剪Linux内核的实现路径

通过裁剪Linux内核冗余模块与优化启动链路,实现微VM亚秒级冷启动的工程化实践与关键参数。

2026-04-18systems

在容器化已成为云原生默认范式的今天,冷启动延迟依然是困扰开发者的持久难题。传统虚拟机启动时间通常在 15 至 30 秒之间,即使优化良好的 Firecracker 也仅能压缩至数百毫秒级别。这一僵局被一个名为 Smol Machines 的项目打破 —— 其基于 libkrunfw 自定义内核的微 VM 实现了亚秒级冷启动,且具备完整的可移植性。本文深入剖析其核心设计思路,为构建高性能微 VM 提供可落地的技术路径。

裁剪哲学:从内核层面解决启动延迟

项目的核心洞察极为简洁:Linux 内核诞生于 90 年代,硬件性能已提升千倍以上,但虚拟机的启动时间却基本保持不变。原因在于历代累积的启动冗余代码和模块已成为沉重的负担。开发者没有使用特殊的编程技巧,而是通过系统性地移除不必要的内核组件来压缩启动时间。这一思路的实践证明,内核的修改仅需约 10 个提交即可完成。

具体实现上,项目 fork 了 libkrun 并创建了 libkrunfw 自定义内核分支。裁剪策略聚焦于以下几个维度:移除非必需的硬件驱动模块、精简文件系统支持、禁用不需要的内核特性,以及压缩 initrd 体积。每一次裁剪都经过严格测试,确保最小功能集仍能正常启动。这种方法与传统的微内核设计理念一脉相承,但在工程实现上更加务实 —— 不追求理论上的完美最小化,而是确保功能可用性的前提下实现性能最大化。

启动链路优化:绕过 systemd 的隐形成本

在技术讨论中,开发者明确指出 systemd 是启动延迟的重要来源之一。传统 Linux 发行版依赖 systemd 进行服务管理,但其复杂的依赖解析和串行启动机制在虚拟机环境中造成了不必要的等待。Smol Machines 通过直接管理 init 进程或使用极简初始化系统来规避这一开销。实测数据表明,绕过 systemd 可将启动时间压缩 30% 至 50%。

进一步优化体现在 virtio 设备的精简配置上。与传统虚拟机不同,微 VM 仅保留必要的虚拟设备:virtio-blk 用于块存储、virtio-net 用于网络、virtio-console 用于控制台输出。这种设备模型的简化不仅加快了枚举速度,也降低了内核态与用户态之间的上下文切换开销。配合 virtio-balloon 的动态内存调节能力,VM 可以根据实际负载自动调整内存占用,避免了传统静态分配的资源浪费。

可移植性设计:单体封装的工程实践

亚秒级启动的另一个关键在于可移植架构的设计。项目提供了 pack 命令,允许用户将完整的 VM 状态打包为单个可分发的文件格式。这一设计借鉴了 Electron 的思路 —— 后者将 Web 应用与浏览器引擎打包为独立可执行文件,Smol Machines 则将应用与 Linux 虚拟机打包为便携单元。打包后的文件可以在不同主机间自由迁移,重新 hydration 后即可恢复运行。

从工作流程来看,用户可以通过 CLI 直接指定 Docker 镜像作为根文件系统源。项目从公共 Docker Registry 拉取基础镜像(如 python:3.12-alpine),并将其转换为 VM 内部的根磁盘。这种设计免去了维护专用镜像仓库的负担,同时也意味着首次启动需要网络连接来获取镜像。一旦镜像缓存完成,后续启动即可完全离线运行。

性能参数与监控要点

基于项目公开的测试数据与社区反馈,以下参数可作为工程实践的参考基准:冷启动目标时间为 500 至 900 毫秒,具体取决于内核配置和主机硬件能力;内存分配采用 virtio-balloon 动态调节,默认配置下 CPU 资源支持 oversubscription;网络 virtio-vsock 正在开发中,当前版本依赖 virtio-net 提供网络能力。

监控层面建议关注以下指标:首次 boot 至 pid 1 就绪的时间(目标小于 1 秒)、 virtio 设备枚举耗时(应小于 100 毫秒)、根文件系统挂载延迟(取决于镜像大小)。若需进一步压缩启动时间,可以考虑预加载内核镜像至内存、使用 tmpfs 作为只读层、或者采用 initramfs 替代完整根文件系统。

局限性与演进方向

当前版本存在若干约束需要评估。首先,libkrun 的安全模型将 VM 与 VMM 视为同一安全上下文,这意味着在多租户场景下需要配合宿主机的 namespace 隔离机制。其次,Docker 支持正在积极开发中,下一版本将提供兼容内核。GPU passthrough 同样是活跃的开发方向,计划在下一个主要版本中发布。Windows 主机支持将通过 WSL2 间接实现,目前处于技术评估阶段。

对于需要强隔离的 AI Agent 场景或持续集成流水线,微 VM 提供了介于容器与传统虚拟机之间的新选择。其核心价值不在于替代某一种现有技术,而在于为特定工作负载提供了介于安全隔离与快速启动之间的平衡点。随着社区贡献的累积,这一技术路线有望进一步丰富云原生的工具生态。

资料来源:Hacker News 讨论帖《Show HN: Smol machines – subsecond coldstart, portable virtual machines》

systems