Skip to content

Jitter Display 仪器独立参考候选准入方案 ​

目标与边界 ​

Frame Lifetimes GUI attempt-04 因资源观察墙钟超限未准入,且该配置冻结为不重试。本方案改用 Instruments Display 仪器,先验证它是否提供可导出的、带时间戳的显示/垂直同步事件,再决定是否能成为 Jitter 同场参考。Apple 文档说明 Display 仪器记录显示与垂直同步事件;这只构成候选依据,不预设事件粒度、身份字段、时钟精度或独立参考资格。Apple:Analyzing the performance of your Metal app

本批仅为工具与事件关联资格,不修改产品代码、公式、质量门或 r4 固定窗,不计正式轮次。现有正式状态保持 Jitter 3/5、整体 37/66,referenceAccuracyValidated=false、referenceUnavailableConfirmed=false、formalFiveRoundsPassed=false。旧 r4、attempt-01~04 Trace、Session、Lab 与失败证据均保留,不重放或拼接。

资格用例 ​

  1. 先做新鲜只读守卫:绑定本批 HEAD 与工具版本;核对设备通道和目标应用身份、目标进程稳定、旧 Lab 原件 SHA/终态/workload 释放、Mac 活动 Session、私有目录前缀无冲突,以及手机和 Mac 的真实可用容量。两端都须至少 10 GiB 且不少于预计新增量两倍;任一条件不符即停止。
  2. 新建独立 Instruments Blank 文档,仅添加 Display,绑定现有自有测试应用;不选择 Game Performance 复合模板,不加 Frame Lifetimes、Animation Hitches 或其他仪器。完成 UI 配置后先保存到新 attempt 目录,再启动资源观察器,确保观察器覆盖录制、停止与 trace 落盘。
  3. 并行运行唯一一条 35 秒 LabP95 p95-tail-v1 资格用例:purpose=qualification、cancelAfterSeconds=35,run name 使用全新前缀 jitter-displayqual-20261023-a01。它仅覆盖基线20秒和正常段前15秒,目的是制造真实绘制/呈现活动。该 run 预期以资格取消终止;必须回读 workloadReleased=true、idleRestored=true 和完整封存文件。它不是正式 Session 或正式 Jitter 轮次。
  4. 此短资格不启动 Perfowl Workbench Session,不点击会清除当前预览的 Start;因此203张内存预览保持不变。只新建这一条 Fixture run 和一份 Display Trace,不安装 App、不改签、不清理历史文件、不向旧目录写入。

资源、时间与停止门 ​

  • Record 前完成文档、目标、输出路径与 observer 准备;从 Record 开始到 Trace 保存的 observer 墙钟上限仍为 45秒,不因上次超时放宽。若无法在剩余时间内完成,立即停止并封存失败,不再试同一配置。
  • 进程树峰 RSS <805,306,368 B,本批输出目录峰值 <134,217,728 B;observer 以200ms采样,采样行数有界。设备 Lab payload 上限2 MiB;预计总新增量按 Trace 上限加 Lab 上限保守核算,空间余量至少为其两倍且不低于10 GiB。
  • 本资格只有一次 URL 发布、一次 Workbench 外 Fixture workload、一次 Instruments Record/Stop 和一次 Trace export。任何请求重发、trace重录、门槛调整、身份变化、通道异常或资源超限都 fail closed,保留已生成原件并结束本 attempt。
  • 离线导出按 trace 实际表行流式检查,限制在120秒/192 MiB;CPU 与 I/O 有数据则记录,无可靠采集则写 unknown,不写0。独立复核绑定选择、run、trace 和 report 的 SHA,确认旧证据集合未变。

事件准入与后续用例 ​

Trace 必须能导出 Display 事件行,而不是只有表 schema 或图形轨道;行需覆盖资格 workload 的活动时段,提供单调可重算的时间戳、稳定显示身份(或能证明全程唯一显示的证据)及可复核的时间基准。与 Fixture presented.json 的独立比对至少要有连续的可唯一配对样本,且沿用既有100 µs端点界;只有刷新率摘要、无法映射的 VSync、缺失行、歧义配对或不明时钟均拒绝候选。资格合格仍不等于参考精度通过。

如果短资格满足这些字段与关联门,下一份独占方案才可启动新的正式同场采集:新 Perfowl Session + 新140秒 LabP95 p95-tail-v1 run + 同一 Display 来源,同时重用冻结的120个1Hz槽、七个固定参考窗、两窗长尾方向门、100 µs端点界及0.400002 ms Jitter差值界。要求全部入选 FrameLifetime 端点和前驱都唯一对应、没有额外或缺失行;独立复核后方可判r4资格。若 Display 资格失败,只拒绝该候选,不确认参考不可用,也不进入r5、下一指标或磁盘读取率。

执行状态 ​

方案已批准并先于测试落盘。执行记录、精确资源读数、Trace schema/行数、Fixture 状态与分离复核结果追加到本方案的 Validation Update;公开快照不包含设备、账号、PID、Bundle ID 或证书标识。

Validation Update · 2026-10-23 15:47 +0800 · attempt-05 attach a01 未启动录制 ​

准入与失败边界 ​

attempt-05 的第一个守卫 a02 因实现要求手机可用字节两次完全相等而拒绝;该条件超出本方案的空间要求。失败收据保留,手机写入0、新run 0。修正后的 a03/a04 以总容量不变且两次可用空间读数分别满足 max(10 GiB, 2 × 136,314,880 B) 为准;两者通过。a05 作为只读后验再次通过。

新鲜 a04/a05 都核对旧Lab原件132文件、23,301,593 B,22个旧run全部终态且workload释放,旧清单摘要一致;设备通道和目标应用进程生命稳定,run前缀无冲突,Mac活动Session为0。a05后验确认手机写入0、新run 0、主机活动Session 0、当前203张工作台预览未变。旧证据未重放或拼接。

Instruments 结果 ​

只含 Display 的模板已保存并校验,唯一仪器类型为 metal-display。唯一一次 xctrace --attach 启动在18.193643秒内以exit code 21结束,错误为 Cannot find process for provided pid;期间DVT读取到的目标进程生命与界面所选进程一致。未收到record-start通知,因此没有发送Fixture URL:URL发布尝试0、Fixture新run 0、Trace文件0、Workbench Session 0。没有对手机写入、安装、启动或发送信号。

资源观察器覆盖的是这次失败的启动尝试,不是录制:峰值RSS 240,222,208 B、输出峰值10,490 B,观察墙钟18.193643秒;没有触及资源阈值。这些数值不能作为一次有效录制的时限或事件证据。

结论与后续 ​

本次仅拒绝 xctrace --attach 这一目标解析方式;没有产生可分析的Display事件,因此既不能准入Display,也不构成参考不可用确认。Jitter正式仍 3/5、整体 37/66;referenceAccuracyValidated=false、referenceUnavailableConfirmed=false、formalFiveRoundsPassed=false。不进入r5、下一指标或磁盘读取率。

下一步另立独占方案,用设备级 --all-processes 捕获方式测试同一Display仪器;新方案、新attempt与新run前缀见Display all-processes资格方案。本attempt的失败收据和模板保留,不重试attach配置。网站及交付状态以指标正式验收闭环为准。

Perfowl · Performance Observer