已完成2026-08-31

Research 03 · Ecosystem & Product Gap

从 Instruments 开源生态到 PerfDog:Perfowl 还缺一套“可信指标 + 稳定采集 + 完整产品”的工程闭环

搜索并分层评估 Apple Instruments / DVT / xctrace 相关开源项目,梳理 PerfDog 当前公开能力,再把结果与 client_perf、Codesign4QC 两份既有调研合并,形成“能借鉴什么、仍需补什么、按什么顺序做”的决策地图。

E0 官方公开资料E1 开源仓库静态调研未复测 PerfDog / 真机未开始产品开发

Executive conclusion

结论先行

已经找到可拼成 iOS 采集底座的开源参考组合,但没有一个项目能直接等价替代 PerfDog。
pymobiledevice3py-ios-deviceappium-ios-remotexpcgo-ios 分别覆盖现代 DVT、性能指标、RemoteXPC 和跨平台 sidecar;JMInstrument、dtxmsg、tidevice 等更适合协议考古或旧系统 fixture。真正缺失的是跨版本验证、指标真值、数据质量和产品工作流。
“复刻 PerfDog”不能只理解为把 CPU、内存、FPS 画成曲线。
PerfDog 当前公开形态已经覆盖七类平台、Desktop / Service / CLI、自动化与 CI、报告协作、自定义指标、云端数据,以及 MCP / Skills / AI。Perfowl 当前只部分具备 iOS 基础采集设计,距离“性能工程基础设施”仍有多个产品层级。
10+
开源项目进入雷达
4
第一梯队源码深挖对象
6
建议分阶段复刻里程碑

近期目标

先做 iOS General MVP:CPU、内存、FPS、GPU、质量状态、实时曲线、可回放会话与离线报告。

当前最大阻塞

FrameTime / Jank / 120Hz、CPU 与内存口径、GPU 单位仍没有与 Xcode / PerfDog 同场验证的真值基线。

范围与证据边界

本报告分析的是开源生态,不是 Apple Instruments 本体。
Apple Instruments 的产品定位、架构、模板/Instrument、xctrace、指标语义与 Perfowl 混合路线已补充为独立的 Apple Instruments 专项调研
  • 本轮“基于 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 开源项目雷达

项目类型 / 覆盖当前价值主要边界决策
pymobiledevice3DVT / Remote Service;Sysmontap、Graphics、Network、Energy、Activity Trace、Core Profile现代 iOS DVT 最完整的 Python 参考之一;iOS 17+ 明确使用 tunnel-backed provider持续流、并行自动化、异常退出和具体设备组合仍需自己做兼容验证第一梯队 · 先深挖
go-iosGo 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-mcpxctrace 编排 + MCP;Time Profiler、Launch、Allocations、Leaks、Network可借鉴“录制 → 导出 → 结构化分析 → Agent 工具”的接口设计重点是开发者诊断,不是无侵入跨 App 的持续采集后期 AI / MCP 参考
MoonLightApp 内嵌 SDK;CPU、内存、GPU、FPS、ANR适合增强模式 Probe、主线程卡顿与低开销采样思路需要接入目标 App,README 建议仅用于 Debug;不能代表零侵入能力增强 SDK 参考
PerfDogExtension官方自定义指标 SDK;数值、场景 Label、Note、渲染/业务数据直接揭示 PerfDog 如何把业务场景、自定义指标与性能时间线合并是扩展接口,不提供系统采集;iOS Wi-Fi 模式有已知限制插件契约重点参考
perfcatWeb 产品样本;任务、实时设备画面、结果与 API可借鉴低成本产品工作流和局域网多用户入口iOS 依赖 tidevice,README 明示 iOS Jank/BigJank 实际不计算UI / 工作流参考
建议深挖顺序
① pymobiledevice3(现代 DVT 核心)→ ② py-ios-device(FPS/Jank/GPU 指标)→ ③ appium-ios-remotexpc(iOS 18+ tunnel 与事件流)→ ④ go-ios(跨平台 sidecar)→ ⑤ PerfDogExtension(自定义指标契约)。每个项目单独固定 commit、许可证、调用链、真机矩阵和可复用边界。

Product capability map

PerfDog 当前公开能力地图

采集端iOS / Android / Windows / macOS / Switch / PlayStation / Xbox
指标与诊断FPS、FrameTime、CPU、Memory、GPU、Network、Energy、Log、Crash
桌面工作台多设备、实时曲线、截图、Marker、场景、进程
自动化Service、gRPC、CLI、CI/CD、弱网模板
报告协作项目、任务、分享、多维对比、自定义上传/私有接收
AI 接口MCP、Skills、AI 分析与诊断

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、StutterFrameTime 来自什么底层事件?动态刷新率下如何归一?算法版本是否可复现?
Jank公开指南给出:当前 FrameTime 大于前三帧均值两倍,且超过约 84ms;BigJank 第二阈值约 125ms120Hz 下 SmallJank 规则、无帧/静止窗口、首帧、后台切换和帧合并如何处理?
CPU总 CPU / App CPU;公开指南同时出现“除以核数”和“非归一化”描述,口径文字本身需要实测澄清原始多核值、核数归一化值、系统总量与目标进程必须分字段保存
内存Footprint、Xcode Memory、Real Memory、Virtual Memory、Available Memory每个值对应哪个 DVT 字段、单位、压缩内存策略与 OOM 解释边界?
GPUDevice / Renderer / Tiler 利用率与 GPU Counter0–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、纹理/顶点内存和任意业务数据接入同一时间线。

厂商精度声明需单独验证。
官网展示的“零修改、无 Root/越狱、低于 1% 开销、FPS ±0.1、1ms 时间戳、1000Hz 采样”可以转化为 Perfowl 的验收目标,但在没有测试设备、场景、统计方法和原始数据前,不能当成第三方确认结论。

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 算法与 fixtureP0
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 ExperienceFrameTime、Jank、BigJank、SmallJank、动态刷新率逐帧模型、算法版本、场景/轮次与阈值固定卡顿 fixture 可复现;60/90/120Hz 结果与基准一致且可解释未开始
2 Automation & ReportService、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/SkillsAI 每条判断可回链到指标口径、原始数据、规则版本和质量状态暂缓
范围建议:先对齐 PerfDog 的 iOS 通用测试主路径,而不是一次性复制七平台。
第一版成功标准应该是“iOS 上可信、稳定、可解释、可回放”,不是页面看起来相似。跨平台和 AI 建在相同的数据契约上,后续才能扩张而不返工。

建议下一批调研任务

  1. pymobiledevice3 深挖

    固定 commit 与许可证;画出 iOS ≤16、17、18+ provider/tunnel 路由;验证 Sysmontap、Graphics、Network、Energy 的字段协商、异常与并发。

  2. py-ios-device Frame Experience 深挖

    逐行追踪 display/FPS/Jank/120Hz 算法,提取原始事件 → FrameTime → Jank 的完整公式与 fixture,不直接接受 README 的准确性声明。

  3. Appium RemoteXPC 深挖

    重点检查 iOS 18+ tunnel 生命周期、动态字段标签、首样本无 CPU 基线、网络 connectionSerial 关联和 crashlog 事件。

  4. go-ios sidecar 对照

    与 pymobiledevice3 在相同设备做建链时间、资源开销、断连恢复、长会话、DTX 复杂 payload 和分发体积对照。

  5. PerfDog 黑盒基线方案

    设计静止、动画、压力、卡顿、App 重启、后台/前台、120Hz 七类场景,明确对照设备、轮次、统计窗口与“厂商声明”验收方式。

需要用户批准的下一步
本轮建议只批准“阶段 0A:指标真值与采集链路验证方案”的详细设计,不立即开发完整客户端。方案通过后,再决定是以 pymobiledevice3 为主、go-ios 为 sidecar,还是采用双实现适配。

主要公开来源

  1. PerfDog 官方网站 — 当前平台、Desktop/CLI、MCP/Skills 与公开精度声明。
  2. PerfDog Client 官方公开指南 — iOS FPS、FrameTime、Jank、CPU、内存、GPU、网络、能耗、日志和多进程口径。
  3. PerfDog Service Demo v2 — gRPC、设备/App/进程/指标查询、多设备和网络模板。
  4. PerfDogExtension — 自定义数值、Label、Note 和业务/引擎数据扩展。
  5. PerfDog Report Server — 自定义上传地址和私有报告接收样例。
  6. pymobiledevice3 DVT 文档 — DVT provider 与 Sysmontap/Graphics/Network/Energy/Core Profile 能力。
  7. py-ios-devicego-iosappium-ios-remotexpc — 现代 iOS 采集候选。
  8. JMInstrumentdtxmsgios_instruments_client — Instruments Server / DTX 协议参考。
  9. tideviceTraceUtilityXCTraceParser — 旧实时链路与 trace 离线解析参考。
  10. MoonLightperfcatapple-instruments-mcp — 增强 SDK、产品工作流与 xctrace/MCP 参考。