Skip to content

CORE-19 Energy Usage 产品化与负值哨兵修正方案 ​

批次目标 ​

CORE-18 已证明 Energy DVT Adapter 能随目标 PID 输出原始 energy.* 字段,但尚未进入 Mac 实时工作台;iOS 17 匿名样本还出现 energy.cost=-10 / energy.overhead=-10,现有引擎会把负值当成普通成本。CORE-19 只承接可信的 Energy Usage,不把 USB Battery Power 或缺失的 ThermalStatus 冒充可用。

交付身份升级为 Collector Foundation 1.1-beta、Mac App 1.0.0 (19) internal beta。

公式先行 ​

指标原始字段转换scope / unit窗口缺失与重置版本
Total Energyenergy.cost非负有限值原样承接;不对分项求和process / source-native-cost每个 Energy gauge 回包字段缺失=missing;负数=source-sentinel;身份未核验=identity-unverifiedenergy-total-gauge.candidate.v1
CPU/GPU/Network/Location/Display对应 energy.*.cost非负有限值原样承接process / source-native-cost同上单字段负数=source-sentinel;若 Total 为负,则整帧七项均 missingenergy-cost-gauge.candidate.v2
Overheadenergy.overhead非负有限值原样承接process / source-native-cost同上负值明确视为源哨兵,不展示 -10energy-cost-gauge.candidate.v2

所有 Energy 值计算层保留 double、不取整、不插值、不换算为 mW/J。真实 0 仅在字段存在、身份 verified 且整帧没有负 Total 哨兵时保留。PerfDog 的 Low/High/Very High 阈值只作为待校准参考,本批不生成等级,避免 270 边界与上游语义未消歧时写死结论。

产品承接 ​

  1. Registry 新增 ios.process.energy.total_cost,静态总数由 52 增至 53。
  2. Collector 实时 wire 增加 Total、CPU、GPU、Network、Location、Display、Overhead 七项及各自 quality/scope/unit。
  3. Swift CollectorMetrics、PerformanceSample 和 Session Review 完整解码七项。
  4. 指标选择器把 Energy Usage 从 Unsupported 调整为 Partial;新增七条曲线,缺值显示“等待样本”,不写 0。
  5. Battery 继续 Unsupported:当前产品只发现 USB 设备,电流/功率受 USB 供电影响,不满足 PerfDog Wi-Fi 约 20 秒口径。
  6. Thermal Status 继续 Partial:iOS 17/18 当前 Diagnostics payload 未观察到稳定字段。

验收门禁 ​

  • E2:Python 系统与冻结 3.12、Swift 全量测试;新增负 Total、负分项、真实 0、身份失败与 wire 解码测试。
  • E2:同一 raw Session 双重派生哈希一致,Registry=53。
  • E4:当前 iOS 17/18 各执行最终打包 Collector 短 Session;核验目标身份、Energy raw、Total/六分项质量、停止与交付哈希。
  • E4 通过只证明来源与缺失处理正确;没有变化量或只有 0 时不宣称完成数值校准。
  • 构建、站点、匿名证据、冻结 HTML 与本地窄范围提交同批完成;不推送。

停止条件 ​

如果最终设备不再提供 energy.cost,则 Total 保持 missing,仍可交付 fail-closed 实现但批次状态记为 partial;如果身份不 verified、出现未解释的正负跳变或 Session 不能有界停止,则不点亮 Energy Usage。

Perfowl · Performance Observer