[Docs] (Disaggregated): close out P5b - record the completed host gate and merged census at 348d22a4, the review addendum's pinned results, and the Redmi exit at 82683d4a (correctness 8/8, first barrier-tax measurement, iris-bsl fixture-limit supplement); next is P6 spawn transport

This commit is contained in:
2026-09-16 22:24:56 -04:00
parent c77831e0fa
commit ea34bccb63
3 changed files with 50 additions and 25 deletions
+24 -16
View File
@@ -1,6 +1,6 @@
# 当前阶段进度
分支 `feat/disaggregated`,头 `7cb29d46`2026-09-16,已推 GitHub)。本文随每次落地更新。
分支 `feat/disaggregated`,头 `c77831e0`2026-09-16,已推 GitHub)。本文随每次落地更新。
逐条裁定的长文原文在 git 历史里(`git log -p -- docs/Disaggregated/CURRENT_STAGE_PROGRESS.md``ef35ea0c` 之前的版本 = ID-1..75 全文)。
## 1. 阶段状态
@@ -9,8 +9,8 @@
|---|---|---|
| P0 / P0.5 / P1 / P2 / P3a / P4a | 已落地 | 见 `ROADMAP.md``MEASUREMENTS.md` §1–§25 |
| **P5** 首个 IPC 帧(reduced path | **已收官** | `ff2994d9..37fc4fdb`,八包 + j0/x2/ap/docs |
| **P5b** inproc 下的 verb 迁移 | **代码已落地,测量未收口** | `37fc4fdb..7cb29d46` |
| P6 spawn transport | 未开始 | 排在 P5b 之后 |
| **P5b** inproc 下的 verb 迁移 | **已收官(2026-09-16** | `37fc4fdb..c77831e0`;出口证据见 `MEASUREMENTS.md` §33–§35 |
| P6 spawn transport | 未开始 | 设备出口已完成,可以开始 |
## 2. 当前头实测
@@ -18,12 +18,16 @@
|---|---|
| 构建 | pull / push / verify / split 四个 flavour 全部通过 |
| G1pull 符号恒等) | `.text +0`27814 符号 0 增 / 0 删 / 0 resize / 0 重命名 |
| unit | pull / push / verify 各 1817/1817split 2138/2138 |
| unit | pull / push / verify 各 1817/1817split 2138/2138`348d22a4` 主机门为 2132;含 `7cb29d46` 后 UserIndexSpan 3/3 复证) |
| `integration-split`inproc | **107/107**P5 收官时 22 |
| `integration-gpu`push | 1148/1148 |
| `integration-gpu`split,单体传输) | 1267/1267 |
| G5p3a / p4a 保护区) | 双绿 |
| 集成普查(inproc,测于 `348d22a4` | 811 passed / 203 skipped / 62 aborted,共 1267 |
| 主机收尾全门(`348d22a4` | **complete=true, exit 0**31 步原始 rc=0 + retrace-verify 续跑合并 **79/79**retrace-push 79/79OpenRA 2/2;对账 `reconciliation-20260916.md` |
| 集成普查(inproc 车道,`348d22a4` | 1267 selected = 811 passed / 203 skipped / 62 aborted / 191 failed,对 c0b **零回退** |
| 79 trace 普查(inprocstage 256 MiB`348d22a4` | **72 passed / 6 aborted / 1 failed**(三轮续跑补齐;首阻塞清单见 `MEASUREMENTS.md` §33 |
| Redmi 正确性(`82683d4a`p5bcodex2stage 256 MiB | **8/8**,四条 A/B trace 双后端首次在设备上 inproc 渲染 |
| Redmi 四臂 A/B(同上) | 24/32 组 200 帧尾验证全绿,barrier tax 首次实测(`MEASUREMENTS.md` §35);iris-bsl 8 组为 fixture 123 帧上限,补充表另记 |
## 3. P5b 落地内容
@@ -44,30 +48,29 @@
- `DrawElements` 不再是阻塞。d1 普查时 77 个 Minecraft 后端用例中 28 个渲染通过(SSIM ≥ 0.99995)。
- blit + mip 之后:`improved-transparency-minecraft-26.3` DirectVulkan SSIM 0.999914`minecraft-1.21.4-fabric-iris-bsl-in-world` DirectVulkan 0.997324、DirectGLES 0.997496。
- OpenRA 双后端 SSIM 1.0。
- 新头上的完整 trace 普查未跑
- **新头完整 trace 普查已跑(2026-09-16`348d22a4`stage 256 MiB):79 = 72 passed / 6 aborted / 1 failed**。首阻塞:`rd12` GLES `InitialBytesNotCarried/resource_respecify`、VK `BarrierTimeout/Present``iris-photon` / `iris-derivative` / `create-indirect` GLES 均 `UnmigratedEmulation/texture-remint-pull``iris-bsl-esc-menu-854` GLES `InitialBytesNotCarried/resource_respecify``create-indirect` VK 内存膨胀被守护杀死(llvmpipe 上 >60 GiB RSS,两次复现)
- **Redmi 出口达成(2026-09-16**:四条 A/B trace × 双后端在设备上以 inproc split 渲染,正确性 8/8;四臂 A/B 首次测得 barrier tax(逐线程 CPU p50 splitpush+5.9% +18.2%,六组;`MEASUREMENTS.md` §35)。
## 5. 开放项(按优先级)
| 项 | 证据 |
|---|---|
| `SEG_STAGE` 默认 32 MiB 装不下 128 MiB 上传:improved-transparency DirectGLES 报 `Fatal{RingOverrun}``MOBILEGL_IPC_STAGE_MB=256` 是 profile,不是修复 | `p5b-results/blit-codex-v1.md` |
| `SEG_STAGE` 默认 32 MiB 装不下 128 MiB 上传:**决定 = 默认不改**,普查/Redmi 显式 256 MiB profile;更大 blob 的分块/专用 carrier 留 P8 设计(ROADMAP 开放问题 11 | `p5b-results/blit-codex-v1.md``MEASUREMENTS.md` §33 |
| MagmaDirectVulkansplit compute/image 路径:89 个错答中 82 个 | `p5b-results/i1-v1.md` |
| rd12 DirectGLES `InitialBytesNotCarried/resource_respecify`rd12 DirectVulkan `BarrierTimeout/Present` | `p5b-results/d1-codex-v1.md` |
| rd12 DirectGLES `InitialBytesNotCarried/resource_respecify`rd12 DirectVulkan `BarrierTimeout/Present``iris-bsl-esc-menu-854` GLES 同 rd12 GLES`create-indirect` VK 主机内存膨胀(守护杀死,两次复现) | 79 trace 普查 `counts.json` / `trace-transitions.json` |
| RGB 三通道 CPU mip 回退 | `p5b-results/mip-codex-v1.md` |
| 设备 barrier tax 未测(此前每次 split 臂都停在 `DrawElements` | `p5-results/ab-v1.md` |
| ~~设备 barrier tax 未测~~ **已测(2026-09-16**splitpush 逐线程 CPU p50 +5.9% +18.2%,逐例见 `MEASUREMENTS.md` §35 | `ab-tables.md` |
| 27 个 P5 inproc 错答:纹理读回走 client-shadow 回退、P7 query 计数、一个检查 harness、一个 FBO/RBO 删除后生命期 | P4b / P7 / P6 债 |
| `rsp` 残余输入;`SEG_REPLY` 2 MiB 上限;GetCaps 两个 blobref 的载体;PACK-PBO 读回真实形式 | P3b/P4b、P6+ |
| 39 个未被任何负载命中的 class-C 槽(query / sync / indirect / 具名 FBO clear 等) | P5b wave 3 / P9 / P10 |
| `test.yml`/`apk.yml` 里的 `feat/disaggregated` 触发器是临时的,合入 dev 前必须移除 | — |
| 设备钉频口径:Redmi `2f7cbe2e` 厂商 GPU 上限已消失,2026-09-16 起 pin 为 1100 MHz(原 1050),跨口径活动不可比钟频 | `pin_device.sh` 更新记录;`MEASUREMENTS.md` §35 |
## 6. 下一步
1. 新头上跑一次完整普查(车道 + 79 个 trace),拿到真实的 Minecraft 渲染数与新的首阻塞表
2. `SEG_STAGE` 默认容量
3. 重建三个 APKpull / push / split),跑红米四臂 A/B:首次可测 barrier tax
4. host 全门一次 + 文档收口 → P5b 收官。
5. 剩余首阻塞(Magma compute/image、rd12、RGB mip)一轮。
6. P6 spawn transport。
1. **P6 spawn transport**:替换 P5b 的 inproc 依赖(具名 blit scoped binding + barrier、mip descriptor 的 barrier-held registry 查询、FBO death 的 inproc mailbox——ROADMAP 债务表),`SocketTransport` + `ServerMain` + 握手/退出语义
2. 剩余首阻塞一轮(Magma compute/image、rd12、RGB mip、texture-remint-pull 仿真槽)
3. P6 出口门:P5b 的完整渲染路径在 `spawn` 下绿;OpenRA 在 Adreno 830 上 split SSIM ≥ 0.99
## 7. 记录位置
@@ -76,11 +79,14 @@
| P5 brief / 契约 / 前言 | `~/w7/notes/p5/BRIEF-P5.md``MobileGL/MG_Remote/CONTRACT-P5.md``~/w7/notes/p5/PACKAGE-PREAMBLE.md` |
| P5 包报告与审查 | `~/w7/notes/p5/p5-results/``joint-v1.md` 全门记录、`ab-v1.md` 设备 A/B、`p5-close-codex-review.md` |
| P5b brief / 契约 / 报告 | `~/w7/notes/p5b/BRIEF-P5B.md``MobileGL/MG_Remote/CONTRACT-P5B.md``~/w7/notes/p5b/p5b-results/` |
| P5b 收官主机门 | `~/w7/p5b-final-host-348d22a4/``reconciliation-20260916.md``summary-counts.{json,md}` |
| P5b 合并普查 | `~/w7/p5b-final-census-348d22a4/`+ `-resume1/2/3`)、`p5b-results/joint-codex-v1.md` census 块 |
| P5b 设备证据 | `~/w7/notes/p5b/apk/p5bcodex2/`APK + proof);`MobileGL/.trace-work/p5b-redmi/p5bcodex2/2f7cbe2e/`correctness 8/8、benchmark `ab-tables.md` 与 bsl 补充表) |
| class-C 普查 | `~/w7/notes/p6/census-classC.md`;基线 `~/w7/p5b-c0b-census-logs/results.json` |
| 门日志 | `~/w7/p5-joint-gate.log``~/w7/p5b-quickgate.log``~/w7/p5-joint-evidence/` |
| 脚本 | `~/w7/notes/tools/``wsl_p5_gate.sh``p5_ab_redmi.sh``wsl_build_p5_apks.sh``p6_census_*.{sh,py}``p5b-c0b-census.sh` |
## 8. 裁定索引(ID-40..75ID-1..39 见 git 历史)
## 8. 裁定索引(ID-40..77ID-1..39 见 git 历史)
| ID | 裁定 |
|---|---|
@@ -118,3 +124,5 @@
| 73 | P5 收官审查:1 blocker / 10 major / 2 minor → r1(核心)/ r2CI |
| 74 | 配额中断期间由用户的 Codex root task 推进 P5b 第二波;不重启同名 Claude 包 |
| 75 | P5b 整波落地推送 `7cb29d46`;快速门全绿;修掉一个测试日志捕获缺陷(库按进程截断日志,`RunInChild` 的增量读把第 2、3 个子进程的诊断读空) |
| 76 | P5b 收官:主机门(`348d22a4`retrace-verify 以钉住库续跑合并 79/79、complete=true79 trace 普查三轮续跑补齐(72/6/1);审查补遗追加钉定结果;**P5b 出口 = Redmi 正确性 8/8 + 四臂 A/Bbarrier tax 首测)** |
| 77 | Redmi `2f7cbe2e` 钉频期望 1050→1100 MHz2026-09-11 实测的厂商 thermal_pwrlevel 上限已消失,`pin_device.sh` 按 2026-09-16 实测更新;`iris-bsl` benchmark 8 组判为 fixture 123 帧上限(pull 同失败,非回归),123 帧序列折算补充表不进 200 帧尾门表 |
+23 -6
View File
@@ -842,9 +842,9 @@ E1 与 E3(a) 的控制步骤 rc=0,各自 selected entry 必须自己的诊断
**执行异常独立记账:**为归档 E1/E3 私有日志而在运行中追加 runner 行,Bash 的读取偏移触发过一次 `-test-dir: command not found`;外层未设置 set-e。该 shell 异常保留在原始会话输出,不冒充测试失败,也不能省略。verify / audit 自己的 JUnit 均完整且步骤 rc=0,后续 E2 正常;`negative-private-logs` 已提前手动归档。最终须用全部必需步骤状态、JUnit 数量及回放计数确认没有缺步,而不是仅凭最后一个 shell exit 宣称通过。
主机 push / verify 的各 79 replay 结果与最终 complete/exit 尚待记录
主机 push / verify 的各 79 replay 与最终 complete/exit **已收口(2026-09-16**retrace-push **79/79**(原始会话内完成,rc=0);retrace-verify 在 WSL 重启前完成 4/79,其余 75 条以 `verify-recovery-r1/` 里 SHA-256 钉住的同一 verify 库串行续跑(`p5b_codex_resume_verify.py --run`exit 0),合并 **79/79**`retrace-verify-combined/summary.json`)。逐步对账无缺失步骤、无非零退出(`reconciliation-20260916.md`),`exit-code.txt=0``complete=true``summary-counts.{json,md}` 已按最终状态重算
合并 inproc 普查由独立 frozen runner 在 `~/w7/p5b-final-census-348d22a4/` 记录:integration lane 显式 **32 MiB**,完整 trace 显式 **256 MiB**。后者容纳目标负载的单次 128 MiB 上传;这不是默认容量修复。integration lane 已执行 **1267 selected = 811 passed + 203 skipped + 62 aborted + 191 failed**。旧 1149 名全部保留,新增 118、删除 0;旧 **432 passes 全保留、零回退**。旧 505 abort → 265 passed / 18 skipped / 58 aborted / 164 failed;旧 27 failed → 1 passed / 26 failed。后续错误被执行到不等于这些路径已正确,新增测试也不计入旧名回归判断。完整 trace 的 79 项仍在运行;最终同名 transition、逐 trace first blocker/SSIM 以 `joint-codex-v1.md` 的 census 块及 `identity.json``counts.json` 为准。
合并 inproc 普查由独立 frozen runner 在 `~/w7/p5b-final-census-348d22a4/` 记录:integration lane 显式 **32 MiB**,完整 trace 显式 **256 MiB**。后者容纳目标负载的单次 128 MiB 上传;这不是默认容量修复。integration lane 已执行 **1267 selected = 811 passed + 203 skipped + 62 aborted + 191 failed**。旧 1149 名全部保留,新增 118、删除 0;旧 **432 passes 全保留、零回退**。旧 505 abort → 265 passed / 18 skipped / 58 aborted / 164 failed;旧 27 failed → 1 passed / 26 failed。后续错误被执行到不等于这些路径已正确,新增测试也不计入旧名回归判断。完整 trace 的 79 项**已收口(2026-09-16****72 passed / 6 aborted / 1 failed**。主跑在 WSL 重启时止于 73/79,续跑三轮补齐——resume1 命中 `create-indirect` DirectVulkan 的内存膨胀(进程组 >60 GiB RSS,守护 SIGKILL);resume2 重试同例再次被内存守护杀死(本条记为 failed,证据在案),其余 5 条因内存水位未恢复被守护推迟;resume3 在干净实例上跑完(4 passed / 1 aborted)。7 条未过项及其首阻塞:`minecraft-1.21.4-rd12-odinlite-in-world` DirectGLES `Fatal{InitialBytesNotCarried,"resource_respecify"}` 与 DirectVulkan `Fatal{BarrierTimeout,"Present"}``iris-photon-v1.3b``iris-derivative-main-d24.4.14``minecraft-1.21.1-neoforge-create-indirect` 三个 DirectGLES 均为 `Fatal{UnmigratedEmulation,"texture-remint-pull"}``minecraft-1.21.4-fabric-iris-bsl-esc-menu-854` DirectGLES `Fatal{InitialBytesNotCarried,"resource_respecify"}``create-indirect` DirectVulkan 为内存守护杀死(llvmpipe/lvp 上的真实膨胀,两次复现)。通过项含 `improved-transparency-minecraft-26.3` DirectGLES SSIM 1.0 / DirectVulkan 0.999914、`iris-iterationrp` DirectVulkan 0.995833、`iris-bsl-esc-menu-854` DirectVulkan 0.998402。逐 trace first blocker/SSIM 以 `joint-codex-v1.md` 的 census 块及 `identity.json``counts.json``trace-transitions.json` 为准。
## 34. P5b 唯一收官审查与定向修复
@@ -856,12 +856,29 @@ E1 与 E3(a) 的控制步骤 rc=0,各自 selected entry 必须自己的诊断
| Major 2 | ClientWaitSync 保留 64-bit 原 timeout,但 applied/reply 等待一律 30 秒,合法长 wait 会被 BarrierTimeout 打断 | 集成 `82683d4a`(包 `6388035f`):applied/reply 预算为 ceil(timeout ns / 1,000,000) + 30,000 ms,以有限 chunk 避开溢出和 forever sentinel;普通容量等待/FenceWaitServer 仍为 30 秒,shutdown 可唤醒 |
| Minor 3 | ReadPixels exact-size reply 的未知 status 仍可穿过 production helper | 集成 `82683d4a`(包 `6388035f`):tight 与 bounce 实际 return path 拒绝 status=3,报 ReplyStatusInvalid;既有 ERROR/DECLINED 诊断保留 |
`6388035f` 的定向 RemoteClientTest **7 selected / 7 passed / 0 skipped / 0 failed**80 ms):真实 EmitAndWait 的 0 ns、1 ns、60 s、UINT64_MAX 预算,FenceWaitServer、shutdown,以及 tight/bounce 的未知状态控制。报告 `~/w7/notes/p5b/p5b-results/wait-codex-v1.md`;该结果属于后续修复包;index span 的报告为 `indexspan-codex-v1.md`。最终代码源头 **`82683d4a83b5c8f4f7c375a7a92ebee9a1854646`** 包含三项修复合并后定向确认待集成者汇总
`6388035f` 的定向 RemoteClientTest **7 selected / 7 passed / 0 skipped / 0 failed**80 ms):真实 EmitAndWait 的 0 ns、1 ns、60 s、UINT64_MAX 预算,FenceWaitServer、shutdown,以及 tight/bounce 的未知状态控制。报告 `~/w7/notes/p5b/p5b-results/wait-codex-v1.md`;该结果属于后续修复包;index span 的报告为 `indexspan-codex-v1.md`。最终代码源头 **`82683d4a83b5c8f4f7c375a7a92ebee9a1854646`** 包含三项修复。**合并后定向确认已汇总(2026-09-16**`7cb29d46` 之前最后一次 quickgate 里 split 单元车道仅有的 2 个失败(`PipeWireCodecTest.UserIndexSpan*`)是测试日志捕获缺陷(库按进程截断日志、fork 子进程增量读读空),由 `7cb29d46` 修复;在 `c77831e0` 的 build-split 上 `PipeWireCodecTest.UserIndexSpan*` **3/3 通过**,三项修复在最终头上均有绿色定向证据
本阶段不再做第二轮全门或收官审查。原始全门的源头仍为 `348d22a4`,后续三项只以修复提交上的定向证据补齐;最终 APK/设备源头另行明确,不能倒改历史 gate 身份。
## 35. P5b Redmi 出口与四臂 A/B(待完成)
## 35. P5b Redmi 出口与四臂 A/B
最终代码源头 **`82683d4a83b5c8f4f7c375a7a92ebee9a1854646`** 正在构建 pull / push / split 三个 APKsplit APK分别运行 monolith controlsplitctl)与 inprocsplit)。四条目标 trace × 双后端共 **8 个正确性组合**;四臂性能共 **32 个组合**。全部显式使用 **`MOBILEGL_IPC_STAGE_MB=256`**,默认 32 MiB 保持不变。运行前检查源头与 APK/library 身份,使用独立 attempt 目录保留正确性 SSIM、Fatal 日志与性能数据
最终代码源头 **`82683d4a83b5c8f4f7c375a7a92ebee9a1854646`**APK 相位 `p5bcodex2`pull / push / split 三个签名 APKprovenance 与 proof 在 `~/w7/notes/p5b/apk/p5bcodex2/`),split APK 分别运行 monolith controlsplitctl)与 inprocsplit)。设备 Redmi M332BFSM8750 / Adreno 830v2,串号 `2f7cbe2e`),证据根 `MobileGL/.trace-work/p5b-redmi/p5bcodex2/2f7cbe2e/`。全部组合显式 **`MOBILEGL_IPC_STAGE_MB=256`**,默认 32 MiB 保持不变(容量决定见 §33 与 ROADMAP 开放问题 11)。**设备钉频口径变更**:2026-09-11 记录的厂商 GPU 频率上限(thermal_pwrlevel 锁 1、1050 MHz)在本机已消失,2026-09-16 实测 deterministic pin 为 **1100 MHz**`pin_device.sh` 已按实测更新);本节数字与 1050 MHz 时代钉频的活动不可直接比钟频,仅同场四臂配对可比
最终 sourcehead 已固定,设备尚无 DEVICE_DONE,**本节不填结果、不标 P5b 收官,也不从主机 SSIM 推断设备成功**。设备实际 selected/passed/skip、每个组合的 SSIM、barrier tax 与逐线程 CPU 汇总待同源证据到齐后填写。性能仍只记录,不作 landing 阻塞门;P6 spawn 要在设备出口之后开始。
**正确性矩阵 8/8**(4 条目标 trace × 双后端,inproc split 臂,逐组钉频前后取证、PNG/target_call/SSIM 阈值、inproc + apply 线程 + 正 wire 记录三证,skip 即失败):`improved-transparency-minecraft-26.3``minecraft-1.21.4-in-world`GLES SSIM 0.999995)、`minecraft-1.21.4-fabric-sodium-in-world``minecraft-1.21.4-fabric-iris-bsl-in-world` 双后端全部通过。**这是四条 A/B trace 首次在 Redmi 上以 inproc 独立 apply 线程渲染——P5b 的出口判据(BRIEF-P5B §5)达成。**
**四臂性能 A/Bbarrier tax 首次实测)**32 组中 **24 组带 200 帧尾验证全绿**improved-transparency / in-world / sodium 三例的全部组);配对口径为三次重复取 wall-time 均值最低者、尾 200 帧(`ab-tables.md`)。逐线程 CPU p50 的 pushpull 与 **barrier taxsplitpush**
| trace | 后端 | pushpull CPU p50 | barrier tax CPU p50 | barrier tax 帧 p50 |
|---|---|---:|---:|---:|
| improved-transparency-26.3 | DirectGLES | +15.6% | **+10.3%** | +0.1% |
| improved-transparency-26.3 | DirectVulkan | +8.8% | **+13.1%** | +13.3% |
| minecraft-1.21.4-in-world | DirectGLES | +21.4% | **+18.2%** | +0.2% |
| minecraft-1.21.4-in-world | DirectVulkan | +11.8% | **+17.9%** | +19.7% |
| minecraft-1.21.4-fabric-sodium | DirectGLES | +10.9% | **+5.9%** | -0.1% |
| minecraft-1.21.4-fabric-sodium | DirectVulkan | +7.6% | **+8.3%** | +4.3% |
splitctlpush 全部在 ±1.6% 内(monolith control 与 push 同源等价),证明上述增量来自 inproc 传输与 barrier 而非 APK/构建差。p99 方向同向放大(sodium DirectVulkan 帧 p99 +107.7% 为离群尾帧,原始序列在 `ab-tables.md`)。inproc 臂 peak RSS 389 MiB2.5 GiB、全角色映射 560.5 MiB(256 MiB × 角色视图是虚拟映射容量,不是 RSS 增量)。
**fixture 受限的 8 组**`iris-bsl-in-world` 全部四臂 × 双后端验证失败,原因是 fixture 本身只有 **123 个 benchmark 帧**,低于跑器的 200 帧尾规则——pull 臂同样失败,是 fixture 上限不是回归。保留的 123 帧完整序列按同法(三次取均值最低)单独折算成带标注的补充表 `ab-tables-bsl-123frame-supplement.md`(全程 123 帧、无尾裁剪;p99 在各臂均被着色器编译主导,与 P2 基线记录一致):barrier tax CPU p50 DirectGLES **+7.1%**、DirectVulkan **+9.1%**,不混入上表。
性能仍按 2026-09-08 口径只记录、不作 landing 阻塞门。设备出口完成,**P5b 收官**P6 spawn transport 自此开始(其 inproc 依赖替换清单见 ROADMAP 的 P5/P5b 债务表)。
File diff suppressed because one or more lines are too long