外观
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
| 字段 | 值 |
|---|---|
| metricID | ios.process.memory.real |
| scope | process |
| unit | bytes |
| source | dvt.sysmontap |
| sourceKey | Processes[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-11 | 161复用既有两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软件与签名安装已验证,连续性/五轮尚未通过。 |