外观
CORE-8 Raw 到 Metric 与五类内存承接
交付范围
Collector Core 新增确定性的 RawMetricEngine。它只消费已落盘的 perfowl.raw-event/1,输出 perfowl.metric-frame/1,并用 metrics-manifest.json 将派生文件 SHA-256 与原始 Session SHA-256 绑定。CLI 新增 derive SESSION,同一 raw Session 可离线重算。
公式先行
| 指标 | 原始字段 | 转换、窗口与单位 | scope | 缺失与重置 | 公式版本 |
|---|---|---|---|---|---|
| APPCpu | Processes[targetPID].cpuUsage | 有限数值原样保留,% | process | 字段缺失=missing;身份未验证=identity-unverified | raw-gauge.v1 |
| TotalCPU | SystemCPUUsage.CPU_TotalLoad | 原始多核 gauge 原样保留,% | device | 首个系统 sentinel 仍由上游质量层拦截;缺失不补 0 | system-gauge.v1 |
| CPU Core Usage | PerCPUUsage[i].CPU_TotalLoad | 每个数组元素生成维度 core=i,% | device | 数组/元素缺失分别不生成或 missing | per-core-gauge.v1 |
| Memory | physFootprint | bytes 原样保存;UI 才除以 1,048,576 显示 MiB | process | 缺失=missing | raw-gauge.v1 |
| XcodeMemory | physFootprint | 独立 metricID;暂为候选别名,不与 Memory 合并 | process | 有值也标 candidate-alias,等待 Xcode Gauge 同场校准 | xcode-memory-candidate.v1 |
| RealMemory | memResidentSize | bytes 原样保存 | process | 缺失=missing | resident-map.v1 |
| VirtualMemory | memVirtualSize | bytes 原样保存;不把大地址空间直接解释为泄漏 | process | 缺失=missing | raw-gauge.v1 |
| AvailableMemory | 显式 byte 字段 availableMemoryBytes/vmAvailableBytes | bytes 原样保存 | device | 只有页数时保持缺失,不猜 page size | raw-gauge.v1 |
| CSwitch/Wakeups/Disk | 对应累计 counter | (current-previous)/(Δns/1e9) | process | 首点=warmup;负差=counter-reset;断代分开 | counter-rate.v1 |
| Process Send/Recv | net.tx/rx.bytes.delta | interval delta/(Δns/1e9) | process | 首点=warmup;PID/generation 分开;缺值不补 0 | interval-rate.v1 |
取整规则:计算层不取整;CSV/界面各自格式化。所有计算只接受有限数值。
实现结果
- 新增 19 项 Python 公式 Registry,其中 5 个内存语义独立保存。
- Core Registry 新增分核 CPU、四个补充内存语义和进程网络 Send/Recv。
- 旧产品 Sidecar 同步透传 XcodeMemory、RealMemory、VirtualMemory;Mac Session 模型、五条 Memory 曲线和 CSV 列完成承接。
- raw counter 的首点、重置、身份失败和未知 GPU schema 都保持非数值质量状态。
验收边界
本批为 E2:Python 全量 65/65、Swift 全量 62/62 通过;Registry 唯一性、wire 解码、内存 CSV 列、counter reset、process network 窗口和 raw hash 绑定均有自动化断言。XcodeMemory、分核 CPU、进程网络与 AvailableMemory 均保持 candidate;没有同场或真机证据的项未升级为数值 validated。