Skip to content

当前阶段验收 · 2026-10-13:目标App发送及接收均已有固定五个全新轮E4阶段证据;最新173接收1200/1200新鲜有效、600/600完整槽、1200/1200正常、40HTTP,来源与严重违规0,六保护15工程全过,整体7/54。公式仍为原生累计差/原生NSDate时间差,candidate不提升为精确HTTP正文或完整网络物理校准;只覆盖已测设备A/受控原生App场景。当前唯一内部173;以下较早“当前”段落是带日期历史,不替代本段。当前结果。

Process Network Tx/Rx(目标进程网络收发速率) ​

作用域属性:[进程级 · 目标专属](Process Scope )

1. 定义与业务价值 ​

Process Tx/Rx 的设计作用域是目标 App 进程的原生网络字节速率,用于观察流量趋势。G34 当前源码严格绑定目标行,并将新录制切换为累计差分候选 v4;b121/b120为历史安装快照;当前唯一内部测试包165已完成严格签名、整树验证与同址覆盖(E3安装),发送新鲜性修复和原生USB受控上传已取得当前包单轮E4证据:240有效点、120完整槽、最大间隔0.5秒、8请求成功、异常筛查通过;固定五轮尚未完成(当前两组均在后续采集前因容量保护停止),不等于第六指标已经交付。身份/算术修复不是协议层字节或物理精度已校准的保证。

2. metricID / scope / unit / source ​

指标metricIDscopeunitsourcesourceKeydefinitionVersion
Process Txios.process.network.send_rateprocessbytes-per-seconddvt.debug-gauge.network-statisticsdiff(net.tx.bytes)/diff(sourceTimestampCocoaSeconds)source-cumulative-rate.candidate.v4
Process Rxios.process.network.receive_rateprocessbytes-per-seconddvt.debug-gauge.network-statisticsdiff(net.rx.bytes)/diff(sourceTimestampCocoaSeconds)source-cumulative-rate.candidate.v4

此表为当前源码 Registry ;旧无 policy Raw 强制保留 source-interval-rate.candidate.v3 和原 delta/time sourceKey,未将旧报告改写为 v4。

3. iOS 系统原理 ​

系统性能调试提供者 NetworkStatistics 按请求目标返回 native 累计和 delta 字段。G33 发现累计增长但 delta 持续 0,因此新录制用累计差分,delta 原值仍保留作诊断。私有字段涉及的协议头、TLS 和重传字节范围尚未独立校准;它不是 HTTP Body 指标,不与应用层抓包做固定比例换算。

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

DTX 服务 com.apple.xcode.debug-gauge-data-providers.NetworkStatistics,selector sampleAttributes:forPIDs:。MacApp/Sidecar/perfowl_collector_core/pmd3_deep_services.py::ProcessNetworkStatistics 由 ProcessNetworkRawAdapter(adapters.py,adapter perfowl.process-network.raw)调用,是 Perfowl 基于 pymobiledevice3 DTX 内核的自研适配,不是该库直接提供的高层成品 API。process_network_rate_window.py::ProcessNetworkRateWindow.consume 计算新窗口,metric_engine.py 保留旧 v3 分支。

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

  • net.tx.bytes / net.rx.bytes:原 JSON 整数 UInt64 累计候选;先做整数差分,不先转 Double。
  • net.tx.bytes.delta / net.rx.bytes.delta:原始 delta 命名字段,保留诊断;其独立语义未校准。
  • time:源端 NSDate(Cocoa 纪元秒),归一化为 sourceTimestampCocoaSeconds。
  • 非空新 Raw 正文带 processNetworkRatePolicy=native-cumulative.v1;空 None / {} 保持空正文及 missing ,不靠 metadata 制造来源。未知 policy 拒绝,不静默回落旧算法。

6. 精确公式 ​

text
D[n] = C[n] - C[n-1]                   # exact integer
Δt[n] = sourceTime[n] - sourceTime[n-1] # finite, positive
r[n] = D[n] / Δt[n]                    # bytes/s, Double, no rounding

只有相邻同 cohort、身份/时钟/计数有效时计算。cohort 包含目标 PID、generation、source epoch、reconnect generation、adapter、source ID、policy。只用原生 NSDate,不用 host 收包时刻做新 v4 分母。整数 D > 2^53 置空 precision-loss;大于 2^53 的累计基线若差分小且精确,仍可计算。

7. Clock / Window / Freshness ​

当前166发送发布策略:显式native-cumulative.v1发送使用独立FIFO6、原receipt最大年龄3×实际interval(默认1.5秒)、原事件token单次发布。发送缺新原源就null,不以相同数值判陈旧,也不以hold-last伪造连续;合法新零也只发布一次。原累计前后端点、源Cocoa时刻、前驱sequence与receipt跟随每个队列点,可用Raw独立复算;同cohort原native结束钟重复/回退不可再作新窗。NetworkStatistics原500ms请求改绝对单调deadline,查询/消费耗时扣除,错过周期只向未来跳过,不burst追赶、不增加请求频率。接收、整机与历史无标记v3发布语义本批未改,也不提前验收接收。

Cocoa NSDate 不等于 host monotonic 或设备 mach absolute time;窗口是相邻原生源时刻的真实差,不假定固定 1 秒。缺钟、非有限/非正钟、逆序或重复窗置空并清窗;后续有效行重新 warmup ,不跨缺口累计。source 时间仍未与独立抓包时钟建立完整映射,不将反事实积分当物理校准。

8. Baseline / Reset / Discontinuity ​

  • verified 正整数目标必须同时精确匹配 native key 与 row.pid;目标缺行、冲突双 key、错行或未知身份拒绝,不退任意单行。
  • 首个有效行 warmup;cohort 切换及 A→B→A 清前值,不能复用旧 cohort。
  • 每方向计数缺失/非法仅断该方向基线;下一有效值 warmup。bool、字符串、float、负值、UInt64 越界不作有效累计。
  • D < 0 → null/counter-reset,保留当前整数作下次基线;D > 2^53 → null/precision-loss。
  • checkpoint schema4 独占单 cohort 状态,先完整校验再赋值。兼容旧 schema1/2/3 及仅两 ProcessNetwork descriptor 恢复 v3 得到的精确旧公式 hash,不泛接任意旧 hash;旧 schema3 DeviceNetwork 状态保留。

9. Quality:valid / candidate / missing ​

v4 有值仍为 candidate,不是 calibrated。拒绝情形保持 null,分别有 warmup、missing、missing-target-row、identity-unverified、unsupported-schema、unsupported-rate-policy、missing-source-clock、invalid-window、invalid-counter、source-sentinel、counter-reset、precision-loss。旧无 policy v3 保留原质量和 host 降级语义;不把新 v4 推回旧录制。

10. 合法 0 的条件 ​

v4 只有相邻同 cohort 原生身份/源钟/UInt64 有效且累计相等时给 candidate 0。missing、重置、错目标、缺钟不填 0;连续性不靠 hold-last 补齐。旧 v3 delta0 候选仍按历史字节回放,G33 的累计增长反例证明这不等于无流量。

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

2026-10-11最新状态:整体6/54项阶段验收,目标App发送166固定五个全新正式轮5/5通过。每轮240/240新鲜有效、120/120完整时段、240/240正常点、8实际受控HTTP请求,最大间隔0.5秒;总1200有效点/600完整时段/40请求、来源与严重异常0。五项已交付保护与原15工程门逐轮通过,排队p95 0.390465–0.463873ms、最大34.893808ms(原50/250ms门保持)。原Core→发布每个token/累计端点/源钟公式重新核同;完整1093文件445867910B外部封存、唯一签名166全树核同。candidate仍不是独立物理流量校准,只覆盖设备A自有受控原生网络场景;网络接收及整机两个方向仍待逐项验收,接收缺专属政策锁定。旧失败与partial不回改,五个全新轮未混旧轮。内部暂免公证,正式发行/GPL与完整主线源码整合仍开放。阶段结果。

2026-09-06 的真机自校准发现一个真实的源时钟问题:某 iOS 18 Wi-Fi 场景下,Debug Gauge 回包的首两个源时间戳相差约 19 分钟,而同期主机收包间隔仅约 2 秒;若用主机收包间隔做分母,会产生约 2.46 GB/s 的人工虚假峰值。改用源端 NSDate 时钟(source-interval-rate.candidate.v2)后,同类 Wi-Fi 场景复测 Recv 最大值回落到 7,445,571.45 bytes/s(约 7.1 MB/s),量级合理,无人工 GB/s 峰值。这是当前公式版本存在的直接真机动因,详见 Network 采集技术演进与实验。

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

能得到:目标 App 自身网络收发的趋势,可用于识别静置待机时的异常流量、版本间回归对比。

不能得到:

  • 不能与 Device Network Tx/Rx 相减来推导"其他后台消耗了多少流量"——两者是不同 source/window,不能相减;
  • 不能与抓包工具(Charles/Fiddler)看到的 HTTP Body 大小做固定比例换算;当前也不把 NetworkStatistics 私有字节字段过度解释成某个已确认的协议层字节口径;
  • 高 Process Rx 与卡顿同窗出现只能提示相关性,不能证明卡顿由网络 I/O 直接导致,需要结合调用栈确认。

13. 常见误区 ​

  • 用主机收包时刻代替源端时钟做分母(历史真实 bug,已修正,见第 14 节);
  • 把 NetworkStatistics 字节数与 HTTP Body 大小的差异套用固定百分比,或在没有独立证据时断言它必然包含某类协议头/重传开销。

14. Legacy / 历史实现 ​

历史上曾直接用主机(Mac)接收数据包的时刻作为速率分母;由于设备到主机的批处理投递存在微秒级到分钟级不等的延迟差异,会产生人工虚假峰值(见第 11 节 19 分钟源时间差案例)。source-interval-rate.candidate.v2(2026-09-06 起)改为强制使用源端 NSDate 时钟,是v2的历史实现;v3继续此时钟并新增无效字节增量表示域保护。

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

2026-10-03 显示/导出增量(不变更采集公式):Network 面板将 App Send/Recv 与 Device Send/Recv 分成四条带作用域标签的曲线;新 Session 的 CSV 在旧列后追加两组各自数值与质量列。旧 Session 回放仅在旧单对字段明确标为 process 时显示于 App 曲线,不用整机值补进程缺口。候选质量保持原状。R3 实施记录。

本页由 site/knowledge/metrics/network-send-recv.md 拆分而来。

版本日期修订要点
v1(本页)2026-09-18从 network-send-recv.md 拆出,成为 Process Tx/Rx 独立 Canonical;补充 19 分钟源时钟异常真机案例与自研适配层引用;删除无来源的固定百分比换算表述。
v1 显示增量2026-10-03R3 为进程与整机新增分作用域曲线及 CSV 列;来源、公式、质量与 E4 状态不变。

2026-10-03 v3 负增量表示域修订 ​

算法版本 source-interval-rate.candidate.v3:源字段与源 NSDate 分母、process scope保持。每方向delta满足 0 <= delta < 2^63 才参与原 delta/sourceElapsedSeconds;显式负delta或UInt64 sign-bit区域值保持 null/source-sentinel,不填0、不做正数截断、不将异常字节带入下个interval;当前源时间仍保留作下段边界,正常另一个方向独立计算。源时钟/单位换算、首次warmup与重连身份规则不变,常数时间/常数状态。该表示域门不是硬件带宽上限。

真实设备A/目标App A的旧一轮出现 Tx=2^64-28、Rx=43、总delta15,有符号读法 -28+43=15 对齐;底层原因仍unknown,旧Raw/报告不回写。v2未挡住这类无符号外观,故旧候选极值不认证为有效流量。修复后的新包两轮E4另列,非全物理校准;R6合同与结果。

版本日期修订
v32026-10-03负值/sign-bit字节delta置空;原时间窗、作用域不变,旧件保留。

2026-10-04 R10 · 实时预览与耐久封存分离 ​

实时网络数据在原有界Raw记录队列接受成功后由同一指标公式预览;辅助字段networkLivePublication=accepted-preview.v1明确是accepted/provisional,不代表已耐久或报告完成。后续写入结果不重复投影;写入失败仍传播、最终报告仍只依据真实耐久Raw链。每流最多8个未退休receipt,设备source发表1.5s与实时2s年龄门不放宽,真实缺源/过期保持null,旧报告不回填。数值算法版本与作用域不变;代码/包/真UI验收分别记录在R10合同与结果,预览不当独立物理校准。

2026-10-04 R11有限真机复验 ​

b111真实工作台两轮38项(含Startup),网络来源/数值/封存各27/27核对,全部CSV设备两个方向候选68/68与68/69,真实双向非零;accepted预览与最终同来源/窗口/数值一致,原年龄与null门未放宽。该结果只说明本次设备A/目标App A的输出与来源完整性,不是物理流量校准、跨场景长期稳定性或启动通过。b110元数据白名单失败与旧Session完整保留;详见修复/失败/验收记录。

2026-10-05 G33 · 零增量与目标身份反例(E2离线审计) ​

旧真实Session139个来源中1行目标native key缺失却被单行fallback接纳;138同目标行native累计Tx/Rx增4260466/4195896B,delta全0。原derived两个方向各warmup1/candidate138且138候选均0,4个相邻累计增长窗仍零;字段全0与正确native累积趋势相矛盾,不视作网络可信。9输入55053893B超原12MiB门,G33正式partial;新R1关联纠正审计字段误读,旧错误件保留。

独立TCP4/8GET的各1MiB正文/SHA与HTTP双方同;另4请求捕获不完整,4缺口260174B、2流无FIN。只证自有tunnel端点的这四正文,不证全部capture、整机/进程字节定义或native→wire同窗。source钟跨度138.214176s来自精确同目标138行,错进程行不纳入;完整记录与G34决策。

本段 G33 发布时,G34 尚未实现,Registry/已装 b120 均 v3;后续源码实施状态见下文,G33 原 partial 与证据不变。全54与五轮100%继续partial。

版本日期修订
v3证据更新2026-10-05撤出未证delta语义及零值可信宣称,记录目标fallback与累计矛盾、独立TCP4/8和输入门partial;未变更当前产品公式。

2026-10-05 G34 · 新源码累计候选 v4(E2通过,b121 E3已验证安装) ​

53 匹配测试通过,包含真实冻结旧 schema3 的 prefix/tail 恢复、DeviceNetwork state 保留、新 checkpoint 恢复及篡改拒绝、空正文负控。139 个旧 Raw 无标记回放逐帧与冻结 v3 相同;仅在内存副本加入 policy 的反事实产生两方向各137 candidate,其中各4正值,源窗积分4260466/4195896B,独立 Fraction 算术误差0。这是 E2 算术/兼容,不是新包或新设备证明。

五对20k事件核心 worst wall1.068132x/CPU1.044078x、首响应0.055797ms、RSS32.003906MiB;adapter 含空回复 worst wall1.028738x/CPU1.024041x、RSS33.199219MiB。首完整1526测试2失败:空正文 metadata 实际回归已修;原10ms ingress门实测47.742742ms原因unknown仍保留,单次有界观察1.462613ms通过不替代历史因果。修改后唯一一次完整 Python1527/0失败、Swift227/3skip/0失败通过;b121已双公证验证并覆盖安装(E3),不提升物理或54项五轮状态。正式方案与实施。

版本日期修订
v4源码2026-10-05新Raw累计差分、严格目标/单cohort/原生钟;空正文保护、旧v3与checkpoint窄兼容;候选物理校准待证。

| 发送新鲜发布v1 | 2026-10-11 | 165原native端点/单次token/FIFO6/3interval TTL与绝对源节拍,原累计v4公式/接收/整机/旧v3不变;E2软件及E3安装通过,网络固定五轮未验、非校准。来源批次。 |

| 发送阶段证据 | 2026-10-11 | 当前165单轮受控上传/来源与异常检查通过;五轮因容量保护未完成,未独立校准;接收仍待逐项验收。来源批次。 |

2026-10-11 G539–G541 · 发送阶段验收更新(E4) ​

最新状态见第11节,原累计v4公式/源字段/作用域/单位不变,本批只增加阶段证据,不提升接收、整机或校准。此前发布的资格状态作为历史保留:

2026-10-11最新状态:整体5/54,第六目标App发送正式0/5。165软件2217完整/407匹配真实ABI控制通过,5000同输入完整处理mean0.331336ms/p950.571131ms;严格签名安装E3已核。新专属异常政策要求99%新鲜连续、预先固定四上传活动/静置及异常粗界、五个全新正式轮、原来源和工程保护;独立精度不作前置,但没有精确网络字节校准证据。两次新资格均保留partial:Wi-Fi轮请求超时,USB轮系统报告网络不可用;后者源239/240(99.58%)、119槽/gap1秒成立,但缺受控传输且合计CPU与排队两工程门未过。网络正式0/5,未将历史线程五轮算网络轮。原Raw封存全局sequence与rawPayload.adapterSequence分列,后者才是在线来源token序号;核对工具已修正,不改累计公式或产品。修复 · 测试方案。

版本日期修订与来源
发送E4阶段证据2026-10-11166五个全新轮逐点来源/异常/原工程及封存通过,6/54;接收仍pending,非物理校准。结果。

| 接收173 E4阶段证据 | 2026-10-13 | 固定五个全新轮1200/600/1200/40HTTP、六保护15工程与现时封存核同;整体7/54,公式/单位/scope不变,非独立精度校准。来源。 |

Perfowl · Performance Observer