34 的冷启动时间分为下载、快照准备、进程和就绪;远程 snapshotter 可能避免在进程启动前取回整份镜像,但把部分内容读取成本移到了首次访问文件时。不能只比较 `create` 的返回速度,就说一次 HTTP 请求更快。

两类成本都算入请求链

固定一个支持按需读取的 snapshotter 与镜像格式,记录启动前实际传输字节、读取文件时额外传输字节、首个请求的耗时、后续请求命中缓存情况。stargz-snapshotter 文档描述了远程按需读取与 eStargz 相关机制;具体实现是否选用了该插件、如何缓存,以及失败后如何回退,必须按实际节点版本和源码路径核对。正例预先设计“启动后只访问镜像中少数文件”的探针;边界例第一次访问未预取的大文件或在受控实验网络中断开远端,可能使首请求变慢/失败。断网仅作用于独立 VM 内的自建网络。

实验矩阵与恢复、统一探针源码允许对照常规 snapshotter;云端没有 containerd/snapshotter、没有真正的镜像按需网络路径,下载字节、缺页、首请求数据一律 `NOT_RUN`。不能把 10 的本地 OCI 布局静态校验替代远程读取实验。
现象 要保存 判断边界
create 更快 进程首响应与传输字节 首请求未必更快
第二轮更快 缓存/远端状态 不推广冷启动
断网失败 访问文件与对象位置 不是必然镜像已损坏

练习

  1. 预测只访问少数文件与首次访问一个大文件,两种工作负载对按需读取收益有什么差异,重复运行并报原始下载字节和失败数。
  2. 预测缓存热时断开自建远端 registry 会否影响后续请求,先界定哪些字节已经在本地,再记录请求与清理。

先修:11:镜像层、34:冷启动。下一篇:E08:平台。

系列总目录:从进程隔离到运行时与编排。

参考资料