拿一条从 docker run 到终端提示的总耗时,无法推断是拉取慢、快照准备慢、进程启动慢还是应用就绪慢。先定义测量的边界与可关联的对象,然后谈数值。

先写实验设计,后写结论

同一 probe-app 固定 image digest、节点 CPU 架构、内核与运行时版本,在专用 VM 上分冷缓存与热缓存两组。时间戳分别落在开始拉取、manifest/layer 验证结束、本机解包与 snapshot 准备结束、OCI create/start、进程首条日志、/ready=200。对同一 ID 记录事件时钟来源,跨组件不能把不同机器的墙钟未经校准就做相减。预先确定预热次数、重复次数、并发、输入大小和失败率,报告每段延迟分布而不是一次的总值;把镜像缓存和应用缓存状态同时记录。

边界例是第二轮 pull 因内容已在本地而很快,服务却因独立的就绪延迟仍返回 503。把这两段之和直接叫“镜像启动慢”会误判优化目标。一次用户请求成功还可能发生在 ready 之前或之后,需用相同 readiness 条件比较。实验变量表和有界探针保证输入一致;本机无构建器、运行时或集群,所有时间分段、重复数据、性能结论 NOT_RUN,不填估算数字。

现象 测量对象 前提
冷启动慢 下载字节、解包与启动分段 先锁定缓存状态
第二次快 相同 digest 的本地 content 不能推断另一节点也快
Running 但 Ready 慢 进程/就绪计时 与镜像传输分开

练习

  1. 先预测镜像已在节点 content store、应用 ready-delay=10 时哪个阶段占主导,分别保存每段真实起止时间。
  2. 预测网络缓存已热但 snapshot 尚未准备时总时延能否靠减少镜像大小改善,按事件区间取证,不凭最终总和猜因。

上一篇:33:制品可信;下一篇:35:性能对照。

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

参考资料