Skip to content

P2 进程网络源时钟修订方案

真机发现

iOS 18 Wi-Fi userspace 采集中,Debug Gauge NetworkStatistics 的第一个 PID 回包可以带有较旧的 NSDate 源时间;紧随的第二个回包已跳到当前时间,其 net.*.bytes.delta 覆盖的是这一大段源时间窗口。如果用两次 host 收包仅约 2 秒的间隔做分母,会人工放大为 GB/s 级假值。

冻结公式

source-interval-rate.candidate.v2

text
rate[n] = deltaBytes[n] / (sourceTime[n] - sourceTime[n-1])
  • sourceTime 取同一 PID 行内 time: NSDate 的 Core Data 秒时钟,原始值另存为 sourceTimestampCocoaSeconds
  • scope 为 PID + target generation;重绑后重新 warmup,不跨代。
  • 第一个真实 PID 行为 warmup;空 acknowledgement 不建立窗口。
  • 源时钟存在时必须使用源时钟;差值小于等于 0 输出 null / invalid-window
  • 仅旧录制或可控 Fixture 没有源时钟时,允许 host monotonic 窗口回放,质量标记 candidate-host-window,不与真机源时钟结论混合。
  • 单位 bytes-per-second;计算层保留 Double,不取整;真实 0 delta 保留为数值 0。

验收

  1. 确定性重放覆盖空 acknowledgement、首点 warmup、源时钟大窗口、旧录制 host 回退和非递增窗口。
  2. iOS 18 Wi-Fi 长于 40 秒 Session 重跑,确认 GB/s 级人工峰值消失。
  3. 源时钟和当前公式版本进入 raw、Metric、自校准报告与用户知识页。

Perfowl · Performance Observer