外观
StartupTiming 启动观察指标 v3
定义与 Registry
| 定义 | metricID | scope | unit | 来源字段 |
|---|---|---|---|---|
| 请求启动到观察到进程 | ios.process.startup.observed_running_ms | process | milliseconds | launch.requested.raw → 同 generation observed-running/rebound |
| 请求启动到观察到前台 | ios.process.startup.foreground_ready_ms | process | milliseconds | launch.requested.raw → 同 generation observed-foreground,或 foreground=true 的 running/rebound |
计算、窗口与取整
算法 startup-observation.candidate.v2。起点在 DTX process-control launch 请求发送之前读取 host monotonic ns;终点为 launch 之后、同 generation 的第一个有效 lifecycle 观察。
text
elapsedMs = (terminalMonotonicNs - launchRequestedMonotonicNs) / 1,000,000计算层保留 Double,不取整,不用 wall clock,不跨 generation 配对。工作台和最终 startup-report.json 使用同一事件与公式;实时样本只是在终点首次出现后投影该不可变结果。
质量语义
- 产品默认
controlled-launch,只发送一次启动请求,不 kill 已运行进程。 - launch 失败时 Session fail-closed;身份必须通过 Bundle ID → PID → process list 核验。
- Lifecycle 轮询的误差上界是
max(pollIntervalSeconds)×1000。 - 缺终点、逆序时间或跨 generation 输出 null /
missing,不写 0。 candidate表示外部观察耗时,不代表 main、首帧或首个可交互点。
当前校准状态
公式、起点时序、单次拉起、实时投影与缺失处理有确定性测试;USB iOS 17 已取得 controlled-launch E4。其他系统和目标 App 仍可能被设备拒绝启动,失败不生成伪值。
版本历史
- v3(2026-09-06):将两项启动观察值接入实时 wire 与工作台面板,保持与归档报告同公式。来源:P4 工作台指标支持收口方案。
- v2(2026-09-05):起点前移到 launch 发送之前,产品接入单次非冷启动与身份核验闭环。
- v1(2026-09-05):建立两项启动观察耗时与轮询误差边界。