Skip to content

P4 工作台指标支持收口结果

结论

“添加指标”的 17/17 个入口现在都可选择:14 项标为“可用”,Battery、Thermal Status、GPU Counter 3 项标为“条件可用”,不再出现“部分支持 / 后续批次 / 暂未支持”的静态禁用项。支持状态描述产品链是否已接通;数值仍通过 candidate、missing、条件原因和 E1–E4 证据表达,不用改标签冒充数据能力。

本批完成 StartupTiming、CPU Core Usage、Frame Time 与 GPU Counter 的 raw → 公式 → wire → Session/CSV → 工作台闭环。Foundation 升级为 collector-foundation.1.4-beta,Mac App 升级为 1.0.0 (23)

产品交付

添加项产品状态已接通能力当前边界
ScreenShot可用1 秒频率、Session 时间线与附件原生 UI 人工回归开放
StartupTiming可用Running、Foreground Ready、轮询误差上界外部观察时间,不等于 main/首帧/可交互
FPS可用前台画面 FPSforeground-device,非目标 PID 独占
Frame Time可用选中后启用 CoreProfile,实时 FTime 与 Session 帧报告当前 exact debugid 为 candidate;进程归因开放
CPU Core Usage可用按真实向量动态生成 Core 0…N-1整机 scope;缺核心保留 null 槽位
CPU Usage可用APPCpu + TotalCPUTotalCPU normalized 仍为 candidate
Memory Usage可用五类进程内存 + 整机 AvailableMemoryXcodeMemory 是 candidate alias
GPU Usage可用Renderer / Tiler / Deviceforeground-device
CSwitch / Wakeups / Disk可用同 PID+generation 差分速率warmup/reset 不写 0
Battery Temperature可用Diagnostics 温度换算centi-°C candidate
Network可用进程优先、整机回退,同 scope 成对进程源时钟 candidate
Energy Usage可用Total + 六分项 source-native cost单位/等级未对齐 PerfDog
Battery条件可用Current / Voltage / Power 公式与链路仅 Wi-Fi、无外供电、未充电时发布
Thermal Status条件可用0…3 枚举承接与 fail-closed当前设备未返回稳定当前值源
GPU Counter条件可用选中后启用 GPU service,动态 schema 可解析,data row 仅在设备实际返回时发布source-native-count;本轮最终冻结复测未返回 data row,设备公式/单位和跨 SoC 校准开放

公式与质量落实

公式先写入 P4 工作台指标支持收口方案,详细长期口径进入:

关键修正规则:

  1. 分核 CPU 中间缺值保留 null 槽位,不压缩数组导致核心编号漂移。
  2. Frame Time 仅来自 CoreProfile accepted presented-frame timestamp,相邻差分;不使用 1000/FPS 伪造。
  3. GPU Counter 使用静态 Registry ios.device.gpu.counter.source_native 加动态 counter dimension;非 _require=true 直通,_require=false 才差分。
  4. GPU Counter 不执行设备下发 JavaScript,不猜 percent/GB/s;未知 schema、宽度错误、首行和 reset 均保持 missing。
  5. 高成本的 CoreProfile 与 GPU service 只在用户选择对应指标时启动,仍共用唯一 pymobiledevice3 DTX owner。

自动化验收

项目结果证据
冻结 CPython 3.12 全量测试132/132E2
Swift 全量测试79/79E2
Workbench 添加入口17/17 可选择;14 可用 + 3 条件可用E2
Registry54 个静态 metricID,唯一且可追踪E2
CSV54 列,Startup / Frame Time / GPU Counter 保留缺值E2
Collector Core构建与 probe 通过E2
VitePress构建通过E2
Mac App1.0.0 (23) 构建、ad-hoc 严格签名通过E2
内部测试包Perfowl-1.0.0-beta23-x86_64.zip;SHA-256 6ec4ce72…edb2f7b9;ZIP 完整性通过E2
Foundation 离线包perfowl-collector-foundation-1.4-beta-x86_64.tar.gz;SHA-256 b73204f0…2ddaae0;tar 完整性与包内 probe 通过E2

匿名 iOS 17 真机验收

使用当前连接的设备 A 和目标 App A,执行 controlled launch 并选择 StartupTiming、CPU Core Usage、Frame Time、GPU Counter。公开记录不保存设备、App、Bundle ID 或 PID。

事实结果
身份verified
Startup Running / Foreground Ready1,325.933 ms / 1,325.933 ms
轮询误差上界500 ms
分核 CPU6 个核心槽位;150/150 个派生值非空
Frame source1,557,045 records / 32 accepted / unknown chunk 0 / unknown byte 0
GPU Counterschema-ready 1;119 条两整数 heartbeat;无 decoded row;无非空 Metric value(保持 missing)
Raw / drop624 / 0

因此 StartupTiming、分核 CPU 与 Frame Time 达到 E4 candidate。GPU Counter 的 service 控制、设备 schema 和端到端缺值语义达到 E4,但本轮最终冻结二进制没有收到可解码 data row,数值门禁仍开放;旧的“decoded row 8 / 280 values”未被最终冻结证据复现,本结果不保留该结论。Battery 与 Thermal 仍按条件门禁保持 null,不因本批入口可选而升级数值结论。

未关门门禁

  1. GPU Counter:补 iOS 16/18、更多 SoC 的 schema;研究设备公式后再发布 percent、带宽等工程单位。
  2. ThermalStatus:取得可跨 iOS 验证的稳定 0…3 当前值源。
  3. Battery:设备物理断开 USB/充电器、保持 Wi-Fi,完成 battery-only E4。
  4. Frame Time:长时连续性、目标进程专属归因与 PerfDog 同窗校准。
  5. StartupTiming:main、首帧、首个可交互等更精确阶段定义与来源。
  6. TinyJank / Smooth:不在添加菜单中,等待可信定义;不以近似值补齐。
  7. 原生 UI 搜索→选中→开始→停止→截图/Review 的人工验收仍由用户完成。

下一阶段与整体进度

下一阶段先做 P4 原生 UI 人工关门 + P5 条件指标真机补证,随后再进入 P6 xctrace 增强和精确启动阶段研究。整体八阶段中 P0、P1、P2、P3 的代码链已完成;P4 为产品链完成、人工验收开放;P5 为 13/13 公式与来源接入、Battery/Thermal 条件门禁开放;P6 研究中;P7 未开始。

冻结归档:P4 工作台指标支持收口结果 HTML

Perfowl · Performance Observer