外观
Perfowl 技术能力矩阵
这页面向需要继续下钻实现与证据边界的读者,回答:各性能能力由哪条 source family 提供、当前产品 ownership 是什么、在什么条件下成立、证据还缺什么。 如果只想快速知道“Perfowl 现在能看什么”,先看 产品能力总览。
精确 metricID 数量、source/sourceKey 与 definitionVersion 不在标题里手工冻结,统一以 Registry 指标合同索引 和自动门禁为准。
先读 能力与证据模型:
production、candidate、migrating、E2/E4、运行条件和平台覆盖是不同维度,不能压缩成一个“支持/不支持”。
一、如何读这张矩阵
| 字段 | 含义 |
|---|---|
| 能力族 | 用户要解决的性能问题,不等同底层服务名 |
| 当前 source ownership | 当前 Registry / 产品正式从哪里取事实 |
| Product State | production / candidate / migrating / research / legacy |
| Runtime Condition | 前台、process-cold、battery-only 、schema-ready 等物理前置条件 |
| Evidence | 当前已有什么离线、集成或真机证据;具体系统范围看兼容矩阵 |
| 迁移 / 开放门禁 | 尚未完成的 source 切换、跨版本 E4、外部同窗或数值校准 |
二、当前能力族全景
| 能力族 | 代表指标 / 入口 | 当前 source ownership | Product State | Runtime Condition | Evidence / 当前边界 |
|---|---|---|---|---|---|
| Startup Observation | observed_running_ms、foreground_ready_ms | ProcessControl + runningProcesses / lifecycle observer | candidate | 目标启动请求成立、身份可确认 | 作为外部生命周期观测;不等同首帧或 Launch Total |
| Startup Total / Phases | App Launch Total · Startup Phases | CoreProfile lifecycle + ProcessControl | candidate | controlled process-cold;阶段事件是否出现取决于真实生命周期 | iOS 17 已有多轮真机证据;Total provenance、phase coverage、device loss 必须分别披露;跨版本语义不自动外推 |
| Display Performance | Display Performance · FPS · FrameTime | ActivityTrace → CoreAnimation / IOMFBServer / FrameLifetime | implemented · E4 pending | target foreground;primary display;schema observed | iOS 17 source POC 已验证逐帧链、refresh interval 与约 0.037 MiB/s 低带宽;Registry/CapturePlan/Realtime/Report/UI 已 E2,完整产品与跨版本 E4 待关闭 |
| Frame Experience | Frame Experience | Display Performance valid FrameTime → derived metrics | implemented · evidence dependent | target foreground;valid continuous FrameTime | Jank/Stutter/1% Low 等只消费标准 FrameTime 序列;旧 CoreProfile decoder 仅保留 legacy replay/compare,不再拥有新 Session 主采集 |
| CPU | APP CPU · TotalCPU · CPU Core Usage · Thread Count · Context Switch Rate · Interrupt Wakeup Rate | Sysmontap | production / 部分 candidate | source ready;process 指标需 identity verified | 基础 source family 在已验证系统有真机证据 |
| Memory | Physical Footprint · Real Memory · Virtual Memory · Available Memory · Free Memory | Sysmontap / memorystatus | production / 部分 candidate | source ready;process 指标需 identity verified | Available Memory、16 KiB page-size 等仍按各 Canonical 页的候选边界阅读 |
| Device Network | Device Network Tx/Rx | DVT networking | production | 有效 interval / host window | device scope;与 Process Network 不可互换 |
| Process Network | Process Network Tx/Rx | NetworkStatistics | production / candidate calibration | 目标 PID / generation 有效;source timestamp 连续 | 只统计目标进程;首点、重连、进程重启后重新 warmup |
| Disk I/O | Disk I/O Rate | Sysmontap | production | source ready;process 指标需 identity verified | counter 差分速率,首点 warmup |
| Foreground GPU Gauges | GPU Utilization | Graphics renderer / tiler / device utilization | production | target foreground | 目标 App 不在前台时置空;不把 SpringBoard GPU 归给 App |
| GPU Dynamic Counter | Dynamic GPU Counter | DVT GPU dynamic schema | candidate | control plane + schema + data row 都成立 | selector/schema 与 data row 是不同门禁;跨 SoC 单位/公式不可猜 |
| Energy Source-native Cost | Process Energy Cost | Debug Gauge Energy | production / candidate calibration | target PID;source-native value 有效 | 保留 Apple source-native cost 语义,不擅自改成物理瓦特 |
| Battery Electrical | Battery Electrical | Diagnostics / IORegistry | Unsupported(fail-closed 逻辑已验证,从未取得真实 battery-only 放电数值) | battery-only:无外接电源且未充电 | USB 供电时 Current/Voltage/Power 必须 missing;不能以 0 代替"不适用" |
| Battery / Thermal 温度与状态 | Battery Temperature · Thermal Status | Diagnostics / IORegistry | Battery Temperature: Partial;Thermal Status: Partial(未找到跨 iOS 稳定 0–3 来源) | sensor field available | 具体字段、枚举与版本范围以各 Canonical 和兼容矩阵为准 |
三、Source Family 不是 Metric Family
同一个系统服务可以服务多个指标,一个指标族也可能在架构演进中切换 source。
例如:
当前 source ownership 已收敛为:
text
ActivityTrace FrameLifetime
├── FPS
├── FrameTime
├── P95 FrameTime
├── Refresh Rate
└── Frame Pacing Jitter
Graphics
├── GPU Renderer
├── GPU Tiler
└── GPU Device
CoreProfile
└── Startup lifecycle(短时)旧 Graphics FPS 与 CoreProfile Presented Frame 仍可存在于历史 Session、legacy replay 或受控 compare 中,但这属于兼容能力,不等于它们仍拥有当前新 Session 的 Display production ownership。
四、平台覆盖不能从 Foundation 一层外推
建议按三层读兼容性:
text
1. Connection / Provider Route
↓
2. Source Family 可达、selector、schema
↓
3. Metric value / semantic / long-run stability例如某系统完成连接、截图和基础 Adapter E4,只能证明 Foundation 能工作;Startup phase、GPU Counter data row、Display FrameLifetime 等仍要各自建立真机证据。
具体平台矩阵见 iOS 15+ Collector Foundation 兼容矩阵。
五、测试场景如何选指标族
Controlled Process-Cold Startup
优先:
text
Launch Total
+ Total provenance
+ Phase Coverage
+ Startup phases(有则解释,无则披露 missing/N/A)
+ APP CPU / Disk / Memory 辅助归因不要把“9/9 阶段齐全”作为唯一有效启动的前提。
日常滑动与动画
当前新 Session 优先:
text
Display Performance
→ FPS / FrameTime / P95 / Refresh / Jitter
Frame Experience
→ 1% Low / Jank / Stutter / Smooth
Root Cause
→ APP CPU / GPU / IO / Screenshot长稳 / 巡检
重点:
text
Physical Footprint / Real Memory
Thread Count
APP CPU / TotalCPU
Network
Thermal
Display / Frame Experience(需要长时间稳定 source)真实放电测试
必须:
text
Wi-Fi / 可用无线连接
+ 拔除 USB / 充电器
+ ExternalConnected = false
+ IsCharging = false然后才解释 Battery Current / Power。
六、不要用一个图标替代证据阅读
旧式的:
text
✅ 生产可用
🧪 实验性
⚡ 条件受限可以作为 UI 摘要,但不能替代完整判断。正式验收至少确认:
text
Product State
+ Platform Evidence
+ Runtime Condition
+ Quality
+ definitionVersion任何一项不成立,都应显式 missing / candidate / unsupported,而不是通过 fallback、旧值保持或补 0 制造连续曲线。
七、精确 metricID 与公式去哪里查
- 当前 Registry 字段镜像:Registry 指标合同索引
- 公共计算规则:指标计算模型与窗口语义
- Raw → UI 链路:数据流、时钟与断链规则
- 0 / missing / warmup:数据质量与 0 值判定
- 平台版本:iOS 15+ Collector Foundation 兼容矩阵