G132 全指标目标不变,CPU首项锁定
Owner要求与本批决定 · 2026-10-07
Owner明确“全指标交付、一个指标一个指标完成,不完成当前指标不进入下一个指标交付”。同AI承担方案、实现、测试和自复核,不称第三方验收,不使用子代理。当前main基线c4022b0、工作区干净;完整54项、原误差/五轮/120槽240点/500ms/连续有效100%保持。上一聊天关于调整目标仅是建议,不修改冻结v3,不回改旧证据或把已有诊断升级验收。
首项锁定目标App CPU ios.process.cpu.non_normalized。暂停G131提出的virtual优先路线;CPU未完整验收并交付前,不开展内存或其他metricID的新交付。 原内存预检仍保存,暂停不等于删除或验收通过。相关共享回归可用于确认CPU修复未破坏其他指标,但不算推进其他指标交付。
每项阶段目标与完成标准
- 指标定义:真实Registry metricID、scope、单位、系统源、计算公式、质量与适用条件先入档;候选定义不得升级为物理准确。
- 修复闭环:只修已证产品缺陷,匹配回归与同规模前后资源/耗时验证,不以改预期、填零、复制旧数或插值凑通过。
- 独立对照:当前安装版本、同目标进程寿命、原生时轴与测量窗口,独立参考语义和误差按冻结v3。参考不足即保持未验收。
- 固定五轮:先声明场景/窗口/刺激,再执行五轮。实时项原500ms、每轮120个1秒槽/240必需发布点,数值逐点过原误差;连续性及有效性100%。完整准备/过渡/尾/失败另外保留,不挑好轮,不用旧版本诊断充正式轮。会话统计和枚举按原对应定义验收,不伪造每500ms独立事件。
- 实际交付:UI/Raw/导出可追溯、当前签名测试包校验并同址覆盖,逐项报告明确已验和未验条件。Owner内部测试包公证等待豁免仍有效,但最终整体交付的公证及开源合规门不撤销。
- 转项:本项证据复核、测试包交付完成后显式解锁下一项;实现完成、工具测试通过、单次诊断、缺参考、远端成功均不代替指标完成。阻碍仍留在本项,说明原因/影响/待满足条件,不跳到更容易项。
54项交付次序见 internal/acceptance/metric-stage-targets.json。前七项依次:目标App CPU、物理内存占用、驻留内存、虚拟内存、线程数、目标App网络发送、目标App网络接收。每个metricID单独阶段,不把同族通过数混同一个阶段。后续依次整机内存/CPU、调度、磁盘、整机网络、显示/会话统计、GPU、能耗与电池热指标;完整顺序由机读清单固定,不省略困难项。
CPU当前缺口与本批唯一取证动作
G130实际五组CPU参考完整成本1.25795%–1.34210%,超原1%;其原500Hz双API流有1000/998/998/998/998实点和0/2/2/2/2 missed,原件保持,不再重跑相同采样工具。成本未达只证此参考路线未准入,不证明产品CPU错误或CPU指标不可实现。准确性/GUI/五轮仍未完成。
本批串行只读已封存G130五份native二进制、对应成本报告、源码与清单:独立验证字节和原160B解析/实际API顺序,计算getrusage、TASK_ABSOLUTETIME及handler的墙钟读时长、全进程CPU与累计CPU端点差。不把墙钟耗时当CPU、不把两者相减归为线程/唤醒/背景成本,不减去背景来过原门。实点和缺点均保留。
这是停止盲目重复后的一次成本结构核实,用于明确下一次需要改变的机制或缺少的测量,非新成本attempt/非参考准确性验收。所有0个新phone/Session/正式轮从本批实际动作登记,不用旧证据声称当前手机已退出。产品、SDK、Fixture原字节保持,无新包或安装动作。
资源与交付边界
小文件输入合计≤4MiB、单文件≤1MiB、文本行≤64KiB,处理O(n)、串行1、分析≤30s/RSS64MiB、纯流式摘要一次缓存复用,CPU秒实测,物理I/O峰值unknown。磁盘至少10GiB及预计增量两倍,不清理未知用途数据。站点只构建,≤300s/3GiB;本次没有产品变更不打包、不发布网站、不新建环境。
实施后追加实际数字与下一具体CPU动作,更新串行计划、完整状态账本和handoff;新不可变HTML归档、时间线与门表联动。窄范围提交、双远端各一次,GitLab失败不重试不阻断产品,交付通知按两类新规范。产品accepted0/54、CPU正式0/5不因规则落盘变化。
实施前补充 · 串行调度检查
增加内部纯函数 metric_stage_gate.py:校验54项集合、冻结合同摘要、顺序号、scope/unit/type/tolerance、当前项和所有前序的显式验收/交付声明;只允许当前metricID进入交付执行。任何缺项、重复、缩清单、非当前请求或前序未交付即拒绝调度,不自动推进。此函数只是调度守卫,不证明声明的真实性、不替代证据审核;改变当前序号必须完成本项证据复核再显式落盘。匹配负控≤5s/64MiB,O(54),不运行产品或手机。
Implementation / Validation Update · 2026-10-07
已完成54项一一对应的阶段顺序:与冻结Registry集合完全相同,scope/unit/valueKind/tolerance逐项保持;currentSequence=1/currentMetricID=ios.process.cpu.non_normalized,不自动跳项。新增内部调度守卫10个方法,实际拒绝其余53项请求、CPU未验前转第二项、缩清单/重复/改误差/错scope/假已交付等负控;工具全回归298/298,7.728950960s/directCPU6.557539s/directRSS49762304B/observedtree59142144B。调度守卫只是声明一致性检查,不等于审查真实证据,更不新增已验收项。
本批只读独立旧封存G130五份真实ARM binary与cost分析报告,输入摘要/bytes与原delivery seal逐项一致,原FineCPUReference完整读者核五组、双API错误0、footer/实际1000/998/998/998/998点与0/2/2/2/2missed均保留;不重跑CPU成本矩阵、不重新打开手机、不把旧run变为新验证。逐点读取真实rusage与TASK_ABSOLUTETIME括号,得到下表。
| 组 | 全进程CPU ms(原完整成本) | handler累计墙钟 ms | getrusage累计读墙钟 ms | TASK累计读墙钟 ms | handler内其余墙钟 ms |
|---|---|---|---|---|---|
| 1 | 26.842 | 15.307500 | 4.349167 | 10.196917 | 0.761417 |
| 2 | 25.394 | 14.755500 | 4.265583 | 9.725125 | 0.764792 |
| 3 | 25.159 | 14.578375 | 4.158625 | 9.572333 | 0.847417 |
| 4 | 25.250 | 14.181417 | 4.021208 | 9.415542 | 0.744667 |
| 5 | 25.253 | 14.345333 | 4.047417 | 9.534125 | 0.763792 |
边界:handler累计墙钟不是CPU;全进程CPU减handler墙钟不构成唤醒/其他线程/背景归因。API合计读墙钟占handler的大部分,非API部分只有0.744667–0.847417ms,缺少直接worker CPU/冷启动与收尾归属时,不继续把buffer/QoS改动当成已证修复方向。first→last累计CPU另列,但不包含setup/closeout,不能代替原完整资源门。原五组1.25795%–1.34210%全FAIL维持。
分析0.189234582s/CPU0.181055s/RSS18968576B/唯一输入846978B/串行1,4MiB/30s/64MiB门内,I/O物理峰unknown。产品265pins、SDK6pins、冻结v3与原源码字节保持。本批没有产品/Fixture修改、phone/Session/正式轮/新成本attempt/新包/安装/环境/网站发布;不以本批0phone推断当前手机退出状态。当前CPU完整验收未通过、formal0/5、54accepted0/54;所有最终公证/合规/外部参考门保留。
下一唯一动作 · 仍是CPU,不转内存
先资格核实实际SDK公开CLOCK_THREAD_CPUTIME_ID的语义/可用性与读取开销,仅用于observer线程成本诊断,不作新的过程CPU独立真值。若可用,以独占另名一次带前后worker CPU记录的诊断分辨采样线程与全进程成本边界;不在500Hz循环加额外查询,不放宽1%/64MiB、不减双API500Hz、不扣背景。新动作必须先单独落盘有界合同与匹配控制,未证明SDK声明/host结果就是目标设备runtime;不重跑旧QoS/组件/buffer矩阵。事实不足时停在CPU,明确缺口,不跳项。
完整54项交付顺序(每个ID独立阶段)
| 顺序 | 指标 | metricID | 当前阶段状态 |
|---|---|---|---|
| 01 | 目标App CPU | ios.process.cpu.non_normalized | 当前锁定:未验收 |
| 02 | 物理内存占用 | ios.process.memory.physical_footprint | 等待前序交付,不进入 |
| 03 | 驻留内存 | ios.process.memory.real | 等待前序交付,不进入 |
| 04 | 虚拟内存 | ios.process.memory.virtual | 等待前序交付,不进入 |
| 05 | 线程数 | ios.process.thread.count | 等待前序交付,不进入 |
| 06 | 目标App网络发送 | ios.process.network.send_rate | 等待前序交付,不进入 |
| 07 | 目标App网络接收 | ios.process.network.receive_rate | 等待前序交付,不进入 |
| 08 | 整机空闲内存 | ios.device.memory.free | 等待前序交付,不进入 |
| 09 | 整机可用内存候选 | ios.device.memory.available | 等待前序交付,不进入 |
| 10 | 整机CPU总量 | ios.device.cpu.total | 等待前序交付,不进入 |
| 11 | 整机CPU归一化 | ios.device.cpu.total.normalized | 等待前序交付,不进入 |
| 12 | 逐核CPU | ios.device.cpu.core_usage | 等待前序交付,不进入 |
| 13 | 上下文切换率 | ios.process.scheduler.context_switch_rate | 等待前序交付,不进入 |
| 14 | 中断唤醒率 | ios.process.scheduler.interrupt_wakeup_rate | 等待前序交付,不进入 |
| 15 | 磁盘读取速率 | ios.process.disk.read_rate | 等待前序交付,不进入 |
| 16 | 磁盘写入速率 | ios.process.disk.write_rate | 等待前序交付,不进入 |
| 17 | 整机网络发送 | ios.device.network.send_rate | 等待前序交付,不进入 |
| 18 | 整机网络接收 | ios.device.network.receive_rate | 等待前序交付,不进入 |
| 19 | 屏幕刷新率 | ios.display.refresh_rate | 等待前序交付,不进入 |
| 20 | 前台FPS | ios.foreground.fps | 等待前序交付,不进入 |
| 21 | 单帧耗时 | ios.frame.time | 等待前序交付,不进入 |
| 22 | 帧耗时P95 | ios.frame.time.p95 | 等待前序交付,不进入 |
| 23 | 帧节奏抖动 | ios.frame.pacing_jitter | 等待前序交付,不进入 |
| 24 | 平均FPS | ios.frame.fps.average | 等待前序交付,不进入 |
| 25 | FPS至少18占比 | ios.frame.fps.at_least_18_percent | 等待前序交付,不进入 |
| 26 | FPS至少25占比 | ios.frame.fps.at_least_25_percent | 等待前序交付,不进入 |
| 27 | 帧耗时至少100ms占比 | ios.frame.ftime_ge_100_percent | 等待前序交付,不进入 |
| 28 | 帧耗时正向突增率 | ios.frame.ftime_positive_delta_gt_100_per_hour | 等待前序交付,不进入 |
| 29 | FPS下降率 | ios.frame.drop_per_hour | 等待前序交付,不进入 |
| 30 | FPS中位范围占比 | ios.frame.med_range_percent | 等待前序交付,不进入 |
| 31 | 1%低帧率 | ios.frame.one_percent_low_fps | 等待前序交付,不进入 |
| 32 | 小卡顿率 | ios.frame.small_jank_per_10min | 等待前序交付,不进入 |
| 33 | 卡顿率 | ios.frame.jank_per_10min | 等待前序交付,不进入 |
| 34 | 大卡顿率 | ios.frame.big_jank_per_10min | 等待前序交付,不进入 |
| 35 | 卡顿时间占比 | ios.frame.stutter_percent | 等待前序交付,不进入 |
| 36 | 微卡顿率 | ios.frame.tiny_jank_per_10min | 等待前序交付,不进入 |
| 37 | 流畅度 | ios.frame.smooth | 等待前序交付,不进入 |
| 38 | GPU渲染利用率 | ios.foreground.gpu.renderer_utilization | 等待前序交付,不进入 |
| 39 | GPU平铺利用率 | ios.foreground.gpu.tiler_utilization | 等待前序交付,不进入 |
| 40 | GPU整体利用率 | ios.foreground.gpu.device_utilization | 等待前序交付,不进入 |
| 41 | GPU原生计数器 | ios.device.gpu.counter.source_native | 等待前序交付,不进入 |
| 42 | 总能耗评分 | ios.process.energy.total_cost | 等待前序交付,不进入 |
| 43 | CPU能耗评分 | ios.process.energy.cpu_cost | 等待前序交付,不进入 |
| 44 | GPU能耗评分 | ios.process.energy.gpu_cost | 等待前序交付,不进入 |
| 45 | 网络能耗评分 | ios.process.energy.network_cost | 等待前序交付,不进入 |
| 46 | 定位能耗评分 | ios.process.energy.location_cost | 等待前序交付,不进入 |
| 47 | 显示能耗评分 | ios.process.energy.display_cost | 等待前序交付,不进入 |
| 48 | 能耗服务开销评分 | ios.process.energy.overhead | 等待前序交付,不进入 |
| 49 | 整机热状态 | ios.device.thermal.status | 等待前序交付,不进入 |
| 50 | 电池电压 | ios.device.battery.voltage | 等待前序交付,不进入 |
| 51 | 电池放电电流 | ios.device.battery.current | 等待前序交付,不进入 |
| 52 | 电池放电功率 | ios.device.battery.power | 等待前序交付,不进入 |
| 53 | 电池原始温度 | ios.device.battery.temperature_raw | 等待前序交付,不进入 |
| 54 | 电池摄氏温度 | ios.device.battery.temperature_celsius | 等待前序交付,不进入 |