Research 03 · Ecosystem & Product Gap
从 Instruments 开源生态到 PerfDog:Perfowl 还缺一套“可信指标 + 稳定采集 + 完整产品”的工程闭环
搜索并分层评估 Apple Instruments / DVT / xctrace 相关开源项目,梳理 PerfDog 当前公开能力,再把结果与 client_perf、Codesign4QC 两份既有调研合并,形成“能借鉴什么、仍需补什么、按什么顺序做”的决策地图。
Executive conclusion
结论先行
近期目标
先做 iOS General MVP:CPU、内存、FPS、GPU、质量状态、实时曲线、可回放会话与离线报告。
当前最大阻塞
FrameTime / Jank / 120Hz、CPU 与内存口径、GPU 单位仍没有与 Xcode / PerfDog 同场验证的真值基线。
范围与证据边界
- 本轮“基于 Instruments”拆成三类:DVT/DTX 实时采集、xctrace/.trace 离线诊断、App 内嵌 SDK。三者解决的问题不同,不能按同一代码基座评价。
- PerfDog 能力来自其当前官网、公开使用指南、官方 GitHub 组织与 Demo;其中“低于 1% 开销、FPS ±0.1、1ms 时间戳、1000Hz”等是厂商声明,本轮没有独立测量。
- Perfowl 已有能力判断来自 client_perf iOS 专项分析 和 Codesign4QC 性能采集专项分析。没有把外部项目代码复制到 Perfowl。
- “缺失”表示当前 Perfowl 仓库没有已实现且已验证的产品能力;“部分具备”表示调研对象中已有设计或样本,尚未形成 Perfowl 产品与真机证据。
Open-source radar
Instruments / DVT 开源项目雷达
| 项目 | 类型 / 覆盖 | 当前价值 | 主要边界 | 决策 |
|---|---|---|---|---|
| pymobiledevice3 | DVT / Remote Service;Sysmontap、Graphics、Network、Energy、Activity Trace、Core Profile | 现代 iOS DVT 最完整的 Python 参考之一;iOS 17+ 明确使用 tunnel-backed provider | 持续流、并行自动化、异常退出和具体设备组合仍需自己做兼容验证 | 第一梯队 · 先深挖 |
| go-ios | Go sidecar;设备、tunnel、Instruments、Sysmontap | 跨平台单二进制与现有 client_perf 路线吻合;适合设备/隧道进程层 | 复杂 DTX payload、Core Profile 连续流和版本差异需专项压测 | 第一梯队 · 并行验证 |
| py-ios-device | 性能专项;CPU、内存、FPS/120Hz、Jank、网络、热、生命周期、GPU Counter | 指标覆盖最接近 PerfDog iOS 清单,可快速定位算法与服务调用 | README 明示 iOS 17 tunnel 主要依赖外部工具;120Hz/Jank 仍需真值复核 | 第一梯队 · 指标专项 |
| appium-ios-remotexpc XCUITest BiDi | 现代 RemoteXPC;iOS 18+ Sysmontap、Network、Crashlog 事件 | 属性动态标注、tunnel 生命周期、自动化事件接口都很接近生产级集成需求 | 公开的 BiDi systemMonitor 当前限定 iOS/tvOS 18+ 真机;不是完整性能产品 | 第一梯队 · 现代链路 |
| JMInstrument | 协议文章与 Demo;Lockdown、USBMUX、DDI、DTXMessage | 适合理解 Instruments Server 握手、Channel 与回包解析 | 提交很少且年代较早;“实现 PerfDog 功能”缺当前源码与设备证据支撑 | 协议考古 |
| dtxmsg ios_instruments_client | DTXConnectionServices 逆向工具与 C++ 客户端 | DTXMessage 结构、RPC 和 Instruments Server 通信的原始参考价值高 | 主要验证于旧 iOS/Xcode 时代;不覆盖现代 tunnel 与产品稳定性 | 协议 fixture |
| tidevice | 纯 Python Instruments;CPU、内存、网络、FPS、GPU、截图、能耗 | 代码紧凑,适合旧协议、指标解码和测试 fixture | 项目已停止积极维护且明确不支持 iOS 17;不宜作为新底座 | 历史参考 |
| TraceUtility XCTraceParser | .trace / xctrace 离线解析;Time Profiler、Allocations、Core Animation、Network | 可借鉴会话导入、深度诊断与 HTML 可视化;xctrace export 路线更可持续 | TraceUtility 已归档;离线 trace 不替代实时低开销监控 | 深度诊断参考 |
| apple-instruments-mcp | xctrace 编排 + MCP;Time Profiler、Launch、Allocations、Leaks、Network | 可借鉴“录制 → 导出 → 结构化分析 → Agent 工具”的接口设计 | 重点是开发者诊断,不是无侵入跨 App 的持续采集 | 后期 AI / MCP 参考 |
| MoonLight | App 内嵌 SDK;CPU、内存、GPU、FPS、ANR | 适合增强模式 Probe、主线程卡顿与低开销采样思路 | 需要接入目标 App,README 建议仅用于 Debug;不能代表零侵入能力 | 增强 SDK 参考 |
| PerfDogExtension | 官方自定义指标 SDK;数值、场景 Label、Note、渲染/业务数据 | 直接揭示 PerfDog 如何把业务场景、自定义指标与性能时间线合并 | 是扩展接口,不提供系统采集;iOS Wi-Fi 模式有已知限制 | 插件契约重点参考 |
| perfcat | Web 产品样本;任务、实时设备画面、结果与 API | 可借鉴低成本产品工作流和局域网多用户入口 | iOS 依赖 tidevice,README 明示 iOS Jank/BigJank 实际不计算 | UI / 工作流参考 |
Product capability map
PerfDog 当前公开能力地图
1. 平台与产品形态
PerfDog 当前官网将自身定位为游戏性能基础设施,公开列出 iOS、Android、Windows、macOS、Switch、PlayStation、Xbox 七个平台,同时展示 Desktop、Service/CLI、CI/CD、云报告、MCP 与 Skills;官网称 MCP 当前提供 15 个工具接口。该定位意味着对标对象已不只是桌面图表工具。
2. iOS 指标口径
| 领域 | 公开口径 / 能力 | Perfowl 必须回答的问题 |
|---|---|---|
| 帧体验 | FPS Avg/Var/Std/Drop;FrameTime Avg/Delta/Var/Std;Jank、BigJank、SmallJank、Smooth、Stutter | FrameTime 来自什么底层事件?动态刷新率下如何归一?算法版本是否可复现? |
| Jank | 公开指南给出:当前 FrameTime 大于前三帧均值两倍,且超过约 84ms;BigJank 第二阈值约 125ms | 120Hz 下 SmallJank 规则、无帧/静止窗口、首帧、后台切换和帧合并如何处理? |
| CPU | 总 CPU / App CPU;公开指南同时出现“除以核数”和“非归一化”描述,口径文字本身需要实测澄清 | 原始多核值、核数归一化值、系统总量与目标进程必须分字段保存 |
| 内存 | Footprint、Xcode Memory、Real Memory、Virtual Memory、Available Memory | 每个值对应哪个 DVT 字段、单位、压缩内存策略与 OOM 解释边界? |
| GPU | Device / Renderer / Tiler 利用率与 GPU Counter | 0–1 或 0–100 的 canonical unit、不同芯片字段映射和 Counter 能力矩阵 |
| 网络/能耗 | 进程收发、RTT/弱网、温度、电流/电压/功耗、Energy Impact | 有线/无线模式差异、采样间隔、系统权限和准确度等级必须显式标注 |
| 上下文 | 截图、日志、多进程/App Extension、Label、Note、自定义业务数据 | 统一时钟和 session schema,保证性能峰值能回到场景、截图、日志和进程代际 |
3. 工作流与开放接口
官方 Service Demo 展示了设备、App、系统进程、支持指标查询,测试数据流、多设备并行、网络模板,以及移动端、PC、主机平台入口;报告服务器 Demo 证明客户端支持自定义上传地址;PerfDogExtension 则把 Label、Note、DrawCall、Triangle、纹理/顶点内存和任意业务数据接入同一时间线。
Parity matrix
Perfowl 对标差距矩阵
| 能力域 | 当前状态 | 已有输入 | 完成 PerfDog 对标仍缺 | 优先级 |
|---|---|---|---|---|
| iOS 设备 / tunnel | 部分具备 | client_perf 设备、tunnel、截图;Codesign4QC provider 与重绑设计 | Hotplug、配对、Developer Mode、DDI、iOS 17+ tunnel 状态机、断连恢复和多设备压力 | P0 |
| CPU / 内存基础指标 | 部分具备 | sysmontap 字段、Schema v2、会话与质量计数 | Xcode/PerfDog 同场误差、归一化双口径、内存语义与覆盖率基线 | P0 |
| FPS / FrameTime / Jank | 关键缺失 | Graphics 秒级 FPS、py-ios-device 候选实现 | 逐帧真值、60/90/120Hz、动态刷新率、Jank/BigJank/SmallJank/Smooth/Stutter 算法与 fixture | P0 |
| GPU / GPU Counter | 部分具备 | Device/Renderer/Tiler 字段;Codesign4QC 已发现单位风险 | canonical unit、芯片/系统能力矩阵、Counter 录制与渲染瓶颈解释 | P0 |
| 可信会话与数据质量 | 设计较强 | 有界队列、背压、generation、manifest、quality counters、离线 HTML | 统一主机/设备时钟、schema migration、原始回放、长会话索引和损坏恢复 | P0 |
| 桌面工作台 | 仅原型 | client_perf 原型 UI 与任务流;当前 Perfowl 只有文档中心 | 设备/App/进程选择、实时图表、缩放/十字线、截图、Marker、场景、错误与质量状态 | P1 |
| 报告 / 对比 / 门禁 | 部分方案 | CSV/Excel、离线报告、场景分位数与规则 | 版本/设备/区间对比、基线、阈值模板、样本不足状态、分享与可回放原始会话 | P1 |
| 日志 / Crash / Jetsam | 缺失产品闭环 | 外部项目具备日志/Crash 入口 | 时间线关联、符号化、崩溃归因证据等级、性能峰值自动关联 | P1 |
| Service / CLI / CI | 未开始 | PerfDog gRPC Demo 和 Codesign4QC sidecar 可作参考 | 稳定 API、设备租约、任务状态机、流式数据、门禁返回码、制品与批量实验室 | P1 |
| 网络 / 弱网 / 能耗 / 热 | 未形成 | DVT Network/Energy 候选与开源实现 | 进程流量聚合、RTT/丢包/重传、弱网模板、电流电压、温度/降频与模式差异 | P2 |
| 深度诊断 | 未开始 | Core Profile / xctrace 项目雷达 | Time Profiler、调用栈、Allocations/Leaks、GPU Counter、自动归因与 trace 导入 | P2 |
| 自定义指标 / SDK | 有 Probe 参考 | Codesign4QC Probe、PerfDogExtension 协议 | 稳定 SDK、类型注册、Label/Note、引擎指标、时钟同步、版本兼容和低开销 | P2 |
| Android / PC / 主机 | 未开始 | 只有产品目标信息 | 平台 Adapter、统一指标本体、各平台权限/安装/分发和验证实验室 | P2+ |
| 云协作 / RBAC / 数据治理 | 未开始 | 无 | 组织、项目、任务、权限、分享、保留策略、审计、私有部署与容量成本 | P3 |
| MCP / Skills / AI | 应暂缓 | 公开产品参考与 xctrace MCP 项目 | 先建立可信数据、规则版本和可解释证据,再开放 Agent 接口 | P3 |
What is still needed
要完成“可用的 PerfDog 复刻”,还需要什么
1. 指标真值实验室
建立固定设备、系统、刷新率、App 场景和采样配置;Perfowl、Xcode Instruments、PerfDog 同时或等价轮次采集,输出误差、覆盖率、延迟和工具自身开销。
2. 可版本化的指标本体
每个指标必须带 source、scope、unit、methodVersion、rawValue、normalizedValue、quality、age;禁止 UI 猜单位,也禁止同名指标跨平台混用口径。
3. 生产级 iOS Core
设备状态机、tunnel/DDI、DVT capability negotiation、多设备并发、断连恢复、App 重启重绑、统一时钟和可回放事件流。
4. 可信存储与质量面
append-only 原始事件、列式/索引化查询、schema migration、损坏恢复、drop/gap/stale/unsupported 可视化,以及小时级会话的内存与磁盘上限。
5. 性能分析工作台
实时多曲线、截图、十字线、区间统计、Marker、场景/轮次、基线与阈值;所有结论可以定位到原始样本和质量状态。
6. 报告与自动化契约
离线 HTML、可分享报告、版本/机型/区间对比;稳定 CLI/Service API、任务状态机、CI 门禁和多设备租约,而不是依赖 UI 点击。
7. 深度诊断与上下文
日志、Crash/Jetsam、调用栈、GPU Counter、网络事务、能耗/热、自定义业务指标与场景截图在同一时钟上关联。
8. 交付与治理
离线依赖、双架构、升级/回滚、工具许可清单、兼容矩阵、遥测隐私、数据保留、故障包和支持诊断能力。
Staged parity roadmap
建议的复刻路线与退出门槛
| 阶段 | 范围 | 必须交付 | 退出门槛 | 当前状态 |
|---|---|---|---|---|
| 0A 真值基线 | CPU、Memory、FPS、GPU、开销与时钟 | 指标字典 v1、fixture、对照协议、兼容矩阵 | 至少 iOS 16 / 17+、60Hz / 120Hz 两类设备;误差和缺失有量化报告 | 建议下一决策 |
| 0B iOS General MVP | 设备、App、进程、基础指标、实时 UI、会话 | 可安装桌面端、原始回放、离线报告、质量状态 | 30/60 分钟稳定采集;断连/重启恢复;开销达标;无静默丢数 | 待批准后开发 |
| 1 Frame Experience | FrameTime、Jank、BigJank、SmallJank、动态刷新率 | 逐帧模型、算法版本、场景/轮次与阈值 | 固定卡顿 fixture 可复现;60/90/120Hz 结果与基准一致且可解释 | 未开始 |
| 2 Automation & Report | Service、CLI、CI、多设备、对比 | API v1、设备租约、基线门禁、报告分享/私有上传 | 批量任务可恢复;相同输入可重复;CI 返回明确状态与证据包 | 未开始 |
| 3 Deep / Network / Extension | 栈、GPU Counter、网络、能耗、SDK | 诊断会话、弱网、Extension contract、上下文关联 | 峰值可追到栈/流/场景/日志;增强模式失败不影响基础采集 | 未开始 |
| 4 跨平台 | Android → macOS/Windows → 主机 | Adapter 与统一指标本体 | 平台差异显式,不用伪统一字段制造错误可比性 | 暂缓 |
| 5 Cloud / MCP / AI | 团队、云报告、Agent 接口 | RBAC、数据治理、规则与证据 API、MCP/Skills | AI 每条判断可回链到指标口径、原始数据、规则版本和质量状态 | 暂缓 |
建议下一批调研任务
- pymobiledevice3 深挖
固定 commit 与许可证;画出 iOS ≤16、17、18+ provider/tunnel 路由;验证 Sysmontap、Graphics、Network、Energy 的字段协商、异常与并发。
- py-ios-device Frame Experience 深挖
逐行追踪 display/FPS/Jank/120Hz 算法,提取原始事件 → FrameTime → Jank 的完整公式与 fixture,不直接接受 README 的准确性声明。
- Appium RemoteXPC 深挖
重点检查 iOS 18+ tunnel 生命周期、动态字段标签、首样本无 CPU 基线、网络 connectionSerial 关联和 crashlog 事件。
- go-ios sidecar 对照
与 pymobiledevice3 在相同设备做建链时间、资源开销、断连恢复、长会话、DTX 复杂 payload 和分发体积对照。
- PerfDog 黑盒基线方案
设计静止、动画、压力、卡顿、App 重启、后台/前台、120Hz 七类场景,明确对照设备、轮次、统计窗口与“厂商声明”验收方式。
主要公开来源
- PerfDog 官方网站 — 当前平台、Desktop/CLI、MCP/Skills 与公开精度声明。
- PerfDog Client 官方公开指南 — iOS FPS、FrameTime、Jank、CPU、内存、GPU、网络、能耗、日志和多进程口径。
- PerfDog Service Demo v2 — gRPC、设备/App/进程/指标查询、多设备和网络模板。
- PerfDogExtension — 自定义数值、Label、Note 和业务/引擎数据扩展。
- PerfDog Report Server — 自定义上传地址和私有报告接收样例。
- pymobiledevice3 DVT 文档 — DVT provider 与 Sysmontap/Graphics/Network/Energy/Core Profile 能力。
- py-ios-device、go-ios、appium-ios-remotexpc — 现代 iOS 采集候选。
- JMInstrument、dtxmsg、ios_instruments_client — Instruments Server / DTX 协议参考。
- tidevice、TraceUtility、XCTraceParser — 旧实时链路与 trace 离线解析参考。
- MoonLight、perfcat、apple-instruments-mcp — 增强 SDK、产品工作流与 xctrace/MCP 参考。