Skip to content

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缺失与重置公式版本
APPCpuProcesses[targetPID].cpuUsage有限数值原样保留,%process字段缺失=missing;身份未验证=identity-unverifiedraw-gauge.v1
TotalCPUSystemCPUUsage.CPU_TotalLoad原始多核 gauge 原样保留,%device首个系统 sentinel 仍由上游质量层拦截;缺失不补 0system-gauge.v1
CPU Core UsagePerCPUUsage[i].CPU_TotalLoad每个数组元素生成维度 core=i%device数组/元素缺失分别不生成或 missingper-core-gauge.v1
MemoryphysFootprintbytes 原样保存;UI 才除以 1,048,576 显示 MiBprocess缺失=missingraw-gauge.v1
XcodeMemoryphysFootprint独立 metricID;暂为候选别名,不与 Memory 合并process有值也标 candidate-alias,等待 Xcode Gauge 同场校准xcode-memory-candidate.v1
RealMemorymemResidentSizebytes 原样保存process缺失=missingresident-map.v1
VirtualMemorymemVirtualSizebytes 原样保存;不把大地址空间直接解释为泄漏process缺失=missingraw-gauge.v1
AvailableMemory显式 byte 字段 availableMemoryBytes/vmAvailableBytesbytes 原样保存device只有页数时保持缺失,不猜 page sizeraw-gauge.v1
CSwitch/Wakeups/Disk对应累计 counter(current-previous)/(Δns/1e9)process首点=warmup;负差=counter-reset;断代分开counter-rate.v1
Process Send/Recvnet.tx/rx.bytes.deltainterval delta/(Δns/1e9)process首点=warmup;PID/generation 分开;缺值不补 0interval-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。

Perfowl · Performance Observer