CORE-4 进程网络、Energy 与 CoreProfile Raw Adapter
开发方案(先于代码)
本阶段把 py-ios-device 冻结源码中已确认的 Channel/selector 接到 pymobiledevice3 11.3.1 的唯一 DvtProvider 上,不引入 py-ios-device runtime 或第二个 DTX socket。
| 能力 | Channel / selector | 实施边界 |
|---|---|---|
| Process Network | NetworkStatistics;startSamplingForPIDs: / sampleAttributes:forPIDs: / stopSamplingForPIDs: | PID scope raw;不复用 Device Network,不先猜字段 |
| Energy | EnergyMonitor 上游 wrapper;相同 start/sample/stop 语义 | PID scope raw;数值含义未校准前不派生 Energy 指标 |
| CoreProfile | coreprofilesessiontap;setConfig/start/stop | 保存原始 chunk、kind、长度、Mach numer/denom/absolute time;不直接发布 FPS/Jank/Lifecycle |
原始字段、单位和缺失语义
- Process Network:完整返回对象,scope
process,raw unitsource-native;空映射是missing,未确认累计/区间含义前不计算 B/s。 - Energy:完整返回对象,scope
process,raw unitsource-native;字段存在不等于单位已确认,不做合计或百分比。 - CoreProfile:
chunk以 base64 保存,同时保存chunkKind、byteLength、Mach timebase。空 chunk 标记missing/end-of-stream;解析失败保留 raw,不发布派生事件。 - 三者均保存 target PID/generation、identity、drop 与 reconnect generation;断线后不跨 generation 聚合。
选择与回滚
候选 CLI 增加显式 Adapter 白名单;默认仍只启动 CORE-3 已验收三路。深度 Adapter 必须显式选择,任一错误逆序关闭并不生成 completed manifest。移除选择即可回滚。
公式状态
本阶段只有 raw capture,没有进入 PerformanceModels.swift Registry 的新 metricID,因此不发布指标页、不接 UI/报告。未来 Process Network B/s、Energy、逐帧/Jank 公式必须在获得字段形态和校准证据后另行先入档。
实施结果
pmd3_deep_services.py:在 pmd3 DTX service 框架内实现 Process NetworkStatistics PID polling;selector 来自冻结 py-ios-device 源码,但 transport 仍只有 pmd3 owner。ProcessNetworkRawAdapter:保存 PID 级完整返回,首个 null 回包修正为missing空 payload,不伪装为 0。EnergyRawAdapter:复用 pmd3 EnergyMonitor,增加 1 秒节流,避免无界 polling。CoreProfileRawAdapter:保存 raw chunk、类型、长度和 Mach timebase;显式白名单启动。- CLI 新增
--adapters,未知或空列表 fail closed;默认三路不变。
验收数据
单元、构建与发布候选
| 验证 | 结果 | 等级 |
|---|---|---|
| Python 3.12 / 系统 Python | 各 51/51 | E2 |
| 深度 Adapter fake stream | process scope、base64、Mach timebase、null→missing | E2 |
| 候选二进制重建 | x86_64 build complete;9/9 import;codesign strict 通过 | E2/E3 |
当前设备 E4
| 采集 | 匿名结果 | 结论 |
|---|---|---|
| Process Network + Energy 源码复测 | 4 秒,Network 4、Energy 3;Network 14 个字段、Energy 18 个字段;drop 0、严格回放通过 | E4 raw candidate |
| 冻结二进制 gauges | 3 秒,Network 3、Energy 3;全部携带 verified target/generation 6;drop 0 | E4 raw candidate |
| CoreProfile 源码复测 | 4 秒,19 chunks、约 92.8 MB;binary 12、bplist 7;timebase 完整 | E4 raw candidate |
| 冻结二进制 CoreProfile | 2 秒,7 chunks、约 19.1 MB;binary 4、bplist 3;单 chunk 最大约 15.6 MB;generation 7、drop 0 | E4 raw candidate |
Process Network 本轮目标没有产生网络流量,字段中 delta/累计值保持真实 0;这证明 PID scope schema 可读取,不证明 Send/Recv 数值校准。Energy 出现负 sentinel 和动态 cost,未确认单位,保持 raw。CoreProfile 吞吐很高,只允许显式诊断模式;尚未实现 chunk 解码与逐帧事件,不能据此发布 FrameTime/Jank。
阶段结论
CORE-4 的三类深度 raw Adapter 已在冻结候选二进制和当前 iOS 16 设备达到 E4。它们完成的是原始能力基座,不是同名业务指标:Process Network rate、Energy 单位和 CoreProfile 派生算法仍需后续校准/decoder。