P4 工作台指标支持收口
日期:2026-09-06 · 状态:implemented · partial · 证据:E2 / E4
产品结论
“添加指标”的 17/17 个入口均可选择:14 项可用,Battery、Thermal Status、GPU Counter 3 项条件可用。工作台不再显示静态“部分支持 / 后续批次 / 暂未支持”;条件不成立时保留 null 和原因,不用 0 代替。
StartupTiming、CPU Core Usage、Frame Time 与 GPU Counter 已进入 raw → 公式 → wire → Session/CSV → 工作台链路。Foundation 为 collector-foundation.1.4-beta,Mac App 为 1.0.0 (23)。
新增公式与质量语义
| 指标 | 公式 / 映射 | scope | 缺失与重置 |
|---|---|---|---|
| Startup Running | (observedRunningMonotonicNs-launchRequestedMonotonicNs)/1e6 | process | 仅 controlled launch 且同 generation;缺失或逆序为 missing;轮询误差上界同样本保存。 |
| Foreground Ready | (observedForegroundMonotonicNs-launchRequestedMonotonicNs)/1e6 | process | 同 generation 配对;非受控启动不生成。 |
| CPU Core Usage | PerCPUUsage[i].CPU_TotalLoad | device | 按真实核心槽位动态展开;中间缺核保留 null,不压缩数组导致核编号漂移。 |
| Frame Time | (presentedTimestampNs[i]-presentedTimestampNs[i-1])/1e6 | foreground-device | 仅 exact debugid 0x31800318 accepted 帧;首帧/逆序/非前台为 missing;不使用 1000/FPS 伪造。 |
| GPU Counter | 非 _ 或 require=true 直通;_ 且 require=false 做同 schema 相邻行差分。 | device | 首行差分项 warmup;负差/reset、未知 schema、行宽错误或无 data row 均 missing。 |
GPU Counter 使用静态 Registry ios.device.gpu.counter.source_native 加动态 counter dimension,单位为 source-native-count。不执行设备下发 JavaScript,不猜测 percent / GB/s。
自动化与构建(E2)
| 项目 | 结果 |
|---|---|
| 冻结 CPython 3.12 全量测试 | 132/132 |
| Swift 全量测试 | 79/79 |
| Workbench 添加入口 | 17/17 可选择;14 可用 + 3 条件可用 |
| Registry / CSV | 54 个静态 metricID;CSV 54 列;缺值不写 0 |
| Mac App | 1.0.0 (23) 生产构建完成,ad-hoc 严格签名验证通过 |
| 内部测试包 | Perfowl-1.0.0-beta23-x86_64.zip · SHA-256 6ec4ce72f2e4fc2308ba294114faed5c1d8e9a64bae07b8d5b1bf4f1edb2f7b9 · ZIP 完整性通过 |
| Foundation 离线包 | perfowl-collector-foundation-1.4-beta-x86_64.tar.gz · SHA-256 b73204f01d11a20612950717e6e42847619652639f67d095f59af28902ddaae0 · tar 完整性与包内 probe 通过 |
最终冻结二进制真机验收(E4)
| 事实 | iOS 17 · 设备 A / 目标 App A |
|---|---|
| 身份 / Raw / drop | verified / 624 / 0 |
| Startup Running / Foreground Ready | 1,325.933 ms / 1,325.933 ms;轮询误差上界 500 ms |
| 分核 CPU | 6 个核心槽位;150/150 个派生值非空 |
| Frame source | 1,557,045 records / 32 accepted / unknown chunk 0 / unknown byte 0 |
| GPU Counter | schema-ready 1;119 条两整数 heartbeat;无 decoded row;无非空 Metric value,质量保持 missing |
StartupTiming、分核 CPU 和 Frame Time 达到 E4 candidate。GPU service 控制、schema 观测与缺值语义达到 E4,但数值门禁未关闭。旧的“decoded row 8 / 280 values”没有被最终冻结二进制复现,本报告不保留该结论。
真实设备、应用、Bundle ID、PID、账号与证书标识仅存在临时验收环境;仓库只保存匿名聚合摘要。
未关门门禁
- Battery:物理断开 USB/充电器、保持 Wi-Fi,完成 battery-only E4。
- Thermal Status:取得稳定 0–3 当前值源,并跨 iOS 验证。
- GPU Counter:定位 heartbeat 后 data row 不返回的协议边界,补 iOS 16/18 和更多 SoC,再做设备公式与单位校准。
- Frame Time:补长时连续性、目标进程归因与 PerfDog 同窗校准。
- StartupTiming:当前为外部 observed-running / foreground-ready;main、首帧、首个可交互阶段仍需新增可信源。
- 原生 UI 搜索→选中→开始→停止→截图/Review 由用户完成人工验收。
下一阶段与整体进度
下一阶段先关闭 P4 原生 UI 人工验收,同时进入 P5 条件指标真机补证,优先 GPU data row、Battery 断电与 Thermal 稳定源。八阶段中 P0–P3 代码链已完成;P4 产品链完成、人工验收开放;P5 公式/来源已接入但三项条件门禁开放;P6 研究中;P7 未开始。