日期:2026-09-17 · 证据等级:E4 真机实测 · 状态:implemented · validated
在历史 Session 07c7e86c 中,StartupTiming + FrameTime 同时选择时,由于旧有架构坚持“Unified CoreProfile 单 Tap、start=1/restart=0/sourceEpoch=1”硬边界,导致 CoreProfile 联合 Tap 在 Startup 完成后约 1.9 秒提前终止 binary 数据流,后续整场 Session(37 秒以上)FrameTime 永久 missing。本批次彻底打破伪假设,实施正确的串行切换架构:
sourceEpoch(1 -> 2),在新 epoch 到来时原子清空 Projector 旧帧时序状态,新 epoch 首帧记为 warmup,第二帧起恢复真实 FrameTime;core-profile-source-busy 退避重试与耗尽降级保护,完整发射 flush-requested、drain、frame-source-restarted、frame-source-active 全生命周期遥测;| 验证轮次 | Session ID | 采样时长 | Epochs | 呈现帧数 (覆盖时长) | 切换耗时 (Gap) | 长尾 FrameTime 表现 | 结论 |
|---|---|---|---|---|---|---|---|
| E4-A 60s 直接回归 | 727c4179-e91c-4362-b2b5-bdceafd7661b |
61.47 s | [1, 2] (count=2) | 884 帧 (44.23 s) | 5,733.48 ms | Epoch 2 产出 755 帧 / 754 个有效 FTime(均值约 16ms,真实捕获 451ms 卡顿),持续至 Stop | 彻底修复长尾断流缺陷 |
| E4-B 5min 长窗测试 | 38249077-882e-4a12-9225-00e0fb18ec88 |
294.72 s (~5 min) | [1, 2] (count=2) | 186 帧 (10.41 s 活跃) | 3,364.64 ms | 切换平滑,Epoch 2 全程存活(182 MB binary / 49 chunks),长达 5 分钟末尾依然输出稳定 16.4ms FTime | 确认第二 epoch binary 不会中途 stall |
npm run build` 耗时 14.62s,63 项 Registry 指标契约校验通过,0 错误 0 死链。/Users/itreenewbee/工作/代码/perfowl/MacApp/dist/Perfowl.app(CFBundleVersion=61,Developer ID Application: Jiacheng Li (76J692XB5C) 签名,Hardened Runtime 开启,codesign --verify --deep --strict 通过);/Users/itreenewbee/工作/代码/perfowl/MacApp/dist/Perfowl-internal-test-Build61-x86_64.zipf0b1a5f75e61d14827811a0ed98641a22171e9a1a0641b8b5835cdd816af9672;/Users/itreenewbee/工作/代码/perfowl/MacApp/dist/Perfowl-internal-test-Build61-x86_64.dmg73376c2fbf8c06277744df021f7e2121d47477e8b136667e2d20061f66f1c253(hdiutil verify 与容器签名校验通过)。FTI-008 / FTI-010 FrameTime 长尾断流缺陷已正式关闭。
下一阶段将推进方案中的 Step 7(P0-B Sample Publisher 解耦),将产品 Sample Clock 与 sysmontap 彻底解除强绑定;随后按证据轨道推进 GPU Counter data-row 协议与真实系统 Thermal State 数据源。