Skip to content

iOS 15+ 连接与指标兼容矩阵

Perfowl 的“支持某个 iOS 版本”包含三层独立结论:

  1. 连接可达:能发现设备、完成 Trust / Lockdown;
  2. 开发服务可达:Developer image 与 DVT / RSD 服务可用;
  3. 指标可信:目标身份、字段、单位、scope、公式与误差完成该系统版本的校准。

前两层通过不代表第三层自动通过。Perfowl 也不会把仓库 README 的能力声明直接记成自己的真机支持。

iOS 版本与连接路线

iOSUSB / DVT 路线Developer ModeDeveloper image管理员权限当前证据
15.xUSBMux + Lockdown,DVT 直连不适用(该开关从 iOS 16 引入)需要与系统兼容的 Developer image通常不需要待 Perfowl E4
16.xUSBMux + Lockdown,DVT 直连需要需要通常不需要iOS 16.6.1 的部分主链已 E4;不外推整个 16.x
17.0–17.3.1RemotePairing / RemoteXPC tunnel → RSD需要个性化 Developer image / 对应开发支持当前可靠主路需要 privileged tunnel待 E4,高风险版本段
17.4–18.1CoreDeviceProxy Lockdown tunnel → RSD需要同上macOS native / userspace 可无管理员权限待 E4;17.4.0 单独验
18.2+CoreDeviceProxy TCP;RemotePairing 改用 TLS-PSK TCP需要同上取决于实际 tunnel provider待 E4;不得继续假定 QUIC
26.x运行时 capability 协商需要最新兼容开发支持取决于协商结果待 E4,不从 18.x 推断

设备连接前置检查

  • 设备解锁,并与 Mac 完成 Trust / pairing;
  • iOS 16+ 开启 Developer Mode;iOS 15 没有这一设置;
  • Developer image 已挂载或相应个性化开发支持可用;
  • iOS 17+ 的 RSD route 已建立并能列出 DVT service;
  • 产品显示实际协商路由,不只显示 Host 原计划;
  • 任一步缺失都显示 missing / degraded 与原因,不使用 0 表示连接状态。

指标与设备要求

指标族原始服务候选最低系统路线硬件 / 场景要求质量与发布要求
APP CPU、内存、线程、CSwitch、Wakeups、DiskDVT SysmontapiOS 15+ DVT;17+ 经 RSD无特定 SoC;目标 App 需存在可验证 PIDBundle ID → PID → generation;首点、缺值、计数器重置不可写 0
TotalCPU、分核 CPU、系统内存DVT Sysmontap system fields同上分核向量和核数须由设备回包raw 多核值与归一化候选分存;不同版本字段能力探测
秒级 FPS、Renderer / Tiler / Device GPUDVT Graphics同上目标 App 前台;大于 60 FPS 需 ProMotion 设备scope 为 foreground-device;秒级 FPS 不等于逐帧 FrameTime
FrameTime、SmallJank、Jank、BigJank、StutterCoreProfile / KDebug raw frame events私有事件源,按大版本验证60Hz 与 120Hz 都需覆盖;动态刷新率单列事件码、mach timebase、首三帧、后台与丢事件全部入质量报告
Network Send / Recv(设备级)DVT NetworkMonitoriOS 15+ DVT;17+ 经 RSD无特定硬件;需制造上传 / 下载流量当前 Registry 是 device scope;interval、空窗与 reset 规则不变
Network Send / Recv(进程级候选)Xcode NetworkStatistics debug gauge服务能力探测必须绑定 PID / generation;覆盖扩展和多进程未证明完整归属前不替换 device 指标,不与设备流量混名
Energy UsageDVT EnergyMonitor / Xcode Energy debug gauge服务能力探测目标 PID;前台 / 后台场景分开raw payload 先保存;单位、窗口和 scope 校准后发布
GPU CounterDVT GPU counter service服务能力探测counter schema 取决于 SoC 与 iOS运行时枚举 counter;未知 schema 显式 unsupported,禁止按机型硬编码
StartupTimingCoreProfile / lifecycle events私有事件源,按大版本验证被动观察或用户选择的受控冷启动两种模式分开;事件时间基与启动边界先入档
Battery、Battery Temperature、Thermal StatusDiagnostics / IORegistry / 条件服务具体服务能力探测字段可能受机型、供电和系统状态影响device scope;不可归因到目标 App;缺字段保持 missing
ScreenShotDVT ScreenshotiOS 15+ DVT;17+ 经 RSD无特殊硬件;设备需可返回有效 PNG低频辅助证据,不是逐帧真值;失败不复用旧图

120Hz 与 ProMotion

逐帧采集协议不应按“60Hz 实现”和“120Hz 实现”拆成两套算法。Perfowl 保存每个 raw frame timestamp,再由同一条 FramePipeline 计算 FrameTime 与窗口 FPS。

但验收设备必须包含至少一台 60Hz 和一台 ProMotion:

  • 60Hz 设备只能证明 60Hz 场景与低刷新率行为;
  • ProMotion 用于验证大于 60 FPS、动态刷新率与 120Hz 阈值场景;
  • 秒级 CoreAnimationFramesPerSecond 只能做概览和交叉检查,不能反推出每一帧时间;
  • 若逐帧事件丢失或时间基未知,Jank 类指标必须显示 unavailable / candidate。

Provider 路由原则

默认候选备用 / 研究候选不变规则
设备与基础 DVTpymobiledevice3go-ios 基础服务UI 不依赖具体库名称
iOS 17+ tunnelpymobiledevice3 native / userspacego-ios userspace / kernel同设备只有一个 tunnel owner;实际 route 入 Session
逐帧 / 深度指标pymobiledevice3 raw CoreProfilepy-ios-device Research Provider同 Session 只有一个主 DTX reader;输出 raw,不直接信任格式化指标
校准xctrace / 自有 Fixture / PerfDog 同场样本第二 Provider 交叉回放未经 E4 不从 Experimental 升级

当前 Perfowl 支持声明

  • 当前只有 iOS 16.6.1 的设备发现、Developer image、基础 DVT 与部分短采集拥有历史 E4;
  • iOS 15、17、18、26 仍是设计支持范围,不是已验证范围;
  • pymobiledevice3 4.21.3 → 11.3.1、go-ios tunnel 与 py-ios-device 深度指标均处于研究 / 候选状态;
  • 商店 App 可以保持原包进行无侵入 attach,但第三方 App 的源码级符号与业务阶段不可保证;
  • GPL-3.0 分发结论仍是对外发布门禁。

建议设备矩阵

优先级设备主要验证目标
P0iOS 17.0–17.3.1 · 60Hzearly-17 privileged RemotePairing、重连与长稳
P0iOS 17.4.0CoreDeviceProxy 分界与 go-ios 17.4.0 路由边界
P0iOS 18.2+ · ProMotionTCP 路径、QUIC 禁用、120Hz raw frame
P0iOS 26.x当前最新系统 capability 与字段漂移
P1iOS 15.7.x · 60Hzlegacy DVT、无 Developer Mode 场景
P1现有 iOS 16.6.1回归基线、旧 / 新 pmd3 对照
P1iOS 17.4–18.1 · ProMotionnative / userspace / kernel tunnel A/B

每台设备至少执行:30 次建链、拔插恢复、锁屏 / 解锁、Mac 睡眠恢复、30 分钟采集;默认路由候选再执行 8 小时长稳。所有报告使用“设备 A / 目标 App A”别名。

版本历史

版本日期变更
v22026-09-04扩展到 iOS 15+;增加三 Provider、iOS 18.2+ TCP、指标硬件要求与证据边界
v12026-09-04连接与系统路由

来源:三底座能力评估与架构调整草案 · pymobiledevice3 iOS 17+ tunnels · py-ios-device · go-ios · Apple Developer Mode

Perfowl · Performance Observer