Skip to content

Real Memory(进程驻留内存映射) ​

当前采集源(2026-10-11 G432/G433):主源仍为pymobiledevice3原生SDK支持列核对后的共享11进程+3系统列,默认500ms发布、250ms配置acquisition/ur;配置频率不等于实收频率。实际请求驻留内存且500ms时复用既有第二DTX 连接,选CPU/resident四列或CPU/footprint/resident五列(尾列为真实memResidentSize);驻留内存单独请求也显式激活,CPU-only/footprint-only/空请求及非500ms不激活新resident模式。独立Raw类型与resident native-window去重不借CPU novel或footprint值;严格列次序、向量/身份/时基及原token/TTL边界。软件与161签名安装通过E2/E3;实际正常UI固定五个新轮通过E4阶段异常筛查,未独立校准。方案。

作用域属性:[进程级 · 目标专属](Process Scope ) Memory Contract:memory-contract.v2

1. 定义与业务价值 ​

Real Memory 是 Perfowl 当前把 sysmontap 的 resident size 字段映射为产品指标的结果,反映目标进程当前驻留(resident)的内存页规模,语义与 Physical Footprint 不同——可能包含当前驻留的 clean/file-backed 等页。

2. metricID / scope / unit / source ​

字段值
metricIDios.process.memory.real
scopeprocess
unitbytes
sourcedvt.sysmontap
sourceKeyProcesses[targetPID].memResidentSize
definitionVersion resident-map.v1

取自当前 Registry 。

3. iOS 系统原理 ​

memResidentSize 是内核为进程维护的驻留内存页统计,与 footprint 的记账口径不完全相同:resident size 可能包含当前驻留但可被系统按需回收的部分页面(如 clean file-backed 页),因此在数值上可能与 Physical Footprint 存在差异,这是正常现象而不是采集错误。

4. 系统服务 / 通信通道 / 采集命令与实现 ​

通道:com.apple.instruments.server.services.sysmontap(DTX)。采集:pymobiledevice3 原生 Sysmontap(provider, process_attributes, system_attributes, interval_ms=intervalMs) 返回的进程条目字段,按目标 PID 过滤;实现于 metric_engine.py::_process_metrics。

5. 原始字段与字段语义 ​

Processes[targetPID].memResidentSize:sysmontap 上报的目标进程当前驻留内存页规模,单位字节。

6. 精确公式 ​

text
RealMemoryBytes = Processes[targetPID].memResidentSize(原样保留)

7. Clock / Window / Freshness ​

Gauge 类型。当前161的发布准入resident-memory-source-freshness.v1保留每个真实目标事件的原receipt、source/adapter、代际/epoch/reconnect/sequence,独立最多6条FIFO,每个token最多发布一次;TTL=3×实际采样interval(默认500ms为1.5秒),不按发布时刻刷新TTL。新事件数值相同合法;没有新事件时值为null,不能继续复制旧值。队列溢出/过期丢弃显式留痕。来源观察不是内核唯一gauge读取时刻证明。

8. Baseline / Reset / Discontinuity ​

无 counter 语义,无前值依赖。

9. Quality:valid / candidate / missing ​

字段缺失、≤0、非有限、bool、已发布或过期事件 → null / missing;目标/生命周期/来源绑定不符 → null / identity-unverified(没有原值时可missing );真实新鲜正值 → candidate。

10. 合法 0 的条件 ​

不存在合法的 0 值。

11. 当前证据、校准与平台覆盖 ​

2026-10-11最新:CPU、物理内存与驻留内存已完成3/54项阶段交付。161真实正常UI固定五轮每轮240/240新鲜有效、120/120完整槽、240/240正常观察包络,最大间隔0.5秒,来源违规、偏离、严重异常及不可评估均0;每轮15项工程条件与已交付指标保护通过。全部原件/参考、完整准备与尾部已封存。此为设备A、目标App A与指定负载下的v5异常筛查结果,不代表独立精度校准或普遍零缺失;calibrated与independentAccuracyPassed仍false。阶段交付证据。

随 CORE-8 确定性公式引擎落地,属于 Track A(可通过 E2 产品链验证)。与 PerfDog "Real Memory" 的算法等价性尚未完成同窗 E4 校准,当前只是 Perfowl 自己对 memResidentSize 的映射语义,不应描述为与其他工具数值一致。

12. 如何分析:能得到什么结论,不能得到什么结论 ​

能得到:目标进程驻留内存的趋势,可与 Physical Footprint 一起观察,帮助理解内存占用的构成层次。

不能得到:不能把 Real Memory 与其他测试工具(如 PerfDog)报告的同名指标直接当作数值等价——两者算法等价性尚未完成同窗校准;不能仅凭 Real 与 Footprint 数值差异就断定采集异常,二者本身语义不同。

13. 常见误区 ​

  • 把 Real Memory 当作与 Xcode/Instruments 某个特定面板数字精确对应的量;
  • 把 Real 与 Footprint 的差值解读为"泄漏"或"额外开销",而不理解两者统计口径本身不同。

14. Legacy / 历史实现 ​

旧版 Registry 曾同时提供 Resident Memory 作为独立产品指标名,与 Real Memory 来自完全相同的底层字段 memResidentSize。memory-contract.v2 起产品层收敛为单一 Real Memory,Resident 只作为底层/兼容术语保留。

15. 版本历史与来源批次 ​

本页由 site/knowledge/metrics/memory-metrics.md v5(2026-09-15)拆分而来。

版本日期修订要点
v1(本页)2026-09-18从 memory-metrics.md 拆出,成为 Real Memory 独立 Canonical。
resident source v5阶段2026-10-11161复用既有两DTX连接补充真实resident源,公式/token/TTL不变;五新轮E4异常筛查通过、未独立校准。来源。

采集源版本更新 · 2026-10-07 ​

G84将SDK全列factory改为固定共享11+3列、输出与采样节拍一致;原生服务/DTX通道不变,支持列仍由SDK查询,传输及指标转换为Perfowl适配层,SDK来源和自研计算分开。初missing、counter warmup/reset、VM近似质量等原边界保留,不外推其他设备/场景持续100%。来源批次。

基础内存独立观察预检 · 2026-10-07(G131) ​

G131基础内存3字段同life预检:254个源点中virtual254/254观察范围数值相容,footprint245/254、resident247/254;均Raw→当前engine差0,但旧126/1Hz参考/原生read语义不充当前130五轮验收。 独立原生API括号与源native窗口不自动同刻,1Hz的未观察时刻不是有界真值,不新增校准或改公式。Virtual数百GiB是映射地址空间,不等物理RAM;优先Virtual新same-life资格不替代physical/real验收。来源。

历史修复快照(160,早于161五轮交付):

| resident freshness v1 | 2026-10-11 | 原样bytes公式不变,新增独立token/FIFO/TTL/身份准入;160软件与签名安装已验证,连续性/五轮尚未通过。 |

Perfowl · Performance Observer