03 · 评分与迭代记录
记录每轮:双评委逐项分数、平均分、Top 扣分与修复动作、新增实验。 评分规则见《01-竞品分析框架与评分标准》§6–§7。评委为无上下文独立代理,任务书:experiments/scripts/judge_prompt.md。
迭代总览
| 版本 | 日期 | 评委1 | 评委2 | 平均 | 目标 | 结果 | 关键动作 |
|---|---|---|---|---|---|---|---|
| v1 | 2026-09-24 | 81 | 80 | 80.5 | ≥65 | ✅ 达成 | Round 1: E1/E2/E4/E5 × 4 配置 |
| v2 | 2026-09-24 | 86 | 85.5 | 85.75 | ≥80 | ✅ 达成(通过线未达) | Round 2/3: E3、E5B、E6、tuned 行、1M 预热合规重测、E5P 压力耦合发现 |
| v3 | 2026-09-24 | — | — | — | ≥90 | — | Round 4: E4P 重跑(修归因错误)、E5P 补 5 reps、E4 离散度、条件落盘 |
Round 1 → 文档 v1
数据:experiments/data/round1/(E1/E2/E4/E5 × system/jemalloc/jemalloc-tuned/mimalloc × 5 reps,verify 活性证据 8 份;tcmalloc 失败档案 experiments/data/tcmalloc-failure/)
过程事件(诚实性记录):
- 初版 E4/E5 协议有缺陷(live 集随机游走、大对象触摸不足),发现后修复 harness 并重测;缺陷数据归档于
round1/superseded/并附 README; - tcmalloc 四条接入路径全部 SIGBUS,按框架 §2.1 降档为设计级,崩溃报告归档。
评委 1(A):81/100(A13 B13 C13.5 D13.5 E18 F10)
- 溯源抽查 3/3 可达且主数值精确命中;
- 抓到两处数据错误:①§5.3 稳态开销列(文档 +9.7/+9.0/+8.5% vs 数据 +8.1/+6.9/+6.8%);②§5.1 "IQR ±5%" 措辞与实际区间不符(system W1 P25 −6.2%);
- 新发现:system RR@5s 逐 rep 双峰(0.962/0.961/0.609/0.619/0.955),"5 秒归还 96%"存在过度概括;
- 门槛判定:D 维 13.5/20✗ 一票否决区;其余五维均过线。
评委 2(B):80/100(A12.5 B13.5 C12 D14 E18 F10)
- 溯源抽查 3/3 主数值精确命中(含逐字节复算 E5 全部 20 文件);
- 独立确认 A 的两处数据错误(E4 开销列、±5% 措辞)与 RR@5s 双峰;
- 新抓到协议缺陷:E1/E2 的 throughput 路径无预热循环(§4.3 声明与实现不符),框架要求 ≥1M 全实验未达;
- 正面确认:verify_jemalloc.err 中 "Background threads: 0" 实证 §7.1 机制归因;tcmalloc 崩溃签名逐字一致;体积数字全部人工验证正确(但未落盘);
- 门槛判定:D 维 14/25✗。
v1 平均分:80.5 / 100(双评委:81 + 80)。目标 ≥65 达成;通过门槛未达(总分 <90,D 维 54–56% < 80% 一票否决线)。
Gap 分析(按扣分排序,合并双评委):
- D2 −5/−4.5:E3/E6 矩阵空缺 + tcmalloc 无 S 级数据(E3 已在 Round 2 完成;E6 已备好待跑;tcmalloc 跨平台对照组本环境不可行,维持降档+真机 PoC 建议)
- D4 −3/−2.5:E6 宏基准未执行
- D1 −2/−2:§5.3 开销列数据错误(+9.7/+9.0/+8.5 → 应为 +8.1/+6.9/+6.8)传导至 §6.2;体积/EINVAL 等 [S] 小项未落盘
- D3 −1.5/−2:E5 零离散度 + system RR@5s 双峰(0.609–0.962)被中位数掩盖;"±5%"不实(实际最宽 −8.6%)
- C3 −1/−1.5:E1/E2 无预热 + 框架 1M 预热未达
- B2 −1.5/−1:tcmalloc S 级数据缺失(降档已接受)
- 小项:目录、表编号、"稳态开销"定义、E5 曲线图、failures.log 表述、版本边界、brew 编译选项披露、mimalloc 16K 页验证、RR=0 论点四重复收敛
修复动作(v2 计划,数据先行):
- bench.c throughput 路径加 ≥1M 预热,全模式预热统一提升至 1M → 重跑 E1/E2/E3 全配置(round3)
- system E5 补 5 reps(共 10)刻画归还时间分布
- aggregate.py:开销列/RR 离散度由脚本产出;新增 sizes.json 落盘
- E6 sqlite 宏基准执行(round3)
- 文档 v2 全量修订(数据修正 + 结构性小项 + E3/E5B/E6 新章节)
Round 2 + Round 3 → 文档 v2
数据:round2/(E3 全 5 配置、E5B 三家族、mimalloc-tuned 全行——旧 200K 预热协议)+ round3/(1M 预热合规全量重测:E1–E5B × 5 配置、system E5 10 reps、E6 宏基准、探测落盘)+ round3/pressure/(E5P/E4P 压力耦合对照)。
过程事件(诚实性记录):
- 教训:round2 链运行期间用脚本补丁改
run_round.sh,触发 bash 惰性读取报语法错误(数据未损,E5B 15/15 与 tuned 行完整);后续规则:运行中的脚本不修改; - E6 初版脚本有冗余预热行(建表后正式跑撞 "table already exists")+ macOS
/usr/bin/time -lRSS 单位为字节被按 KB 处理——修复后重跑,失败记录已从 failures.log 清除(15/15 有效); - 重大发现(E5P):round3 无压力条件下 system E5 全不归还(RR=0),与 round1 的 96% 归还矛盾 → 设计压力对照实验(7GB 不可压缩 hog)→ 证实系统归还由内核内存压力驱动(有压 0.95+,无压 0.000),v1 评委指出的 RR@5s 双峰成因即此;第三方默认在压力下仍 0.000(脏匿名内存不可廉价回收);
- mimalloc E4 EMR 跨轮漂移(0.936→0.882→0.81 加压)被识别为条件敏感现象;mimalloc-tuned 跨协议稳定(0.875/0.875)排除预热混杂;
- 首个 hog(可压缩 0x01 填充)未产生真实压力(内核压缩器吸收,空闲 37%→36%),改用 xorshift 不可压缩填充后成功(空闲 →27%);E4P 在此过渡状态下测得,条件已如实标注。
v2 修复对照表(v1 Gap → v2 动作):
| v1 扣分项 | v2 修复 |
|---|---|
| D2 E3/E6/E5B 矩阵空缺 | E3(表 13)、E5B(表 12)、E6(表 14)全量补齐,可测矩阵 18/18 |
| D4 宏基准 0 分 | E6 sqlite 三构建 × 5 reps + 交叉验证结论(§5.7) |
| D1 开销列数据错误 | 全表改为脚本产出值(summary.md),mimalloc 条件敏感性作为发现如实呈现 |
| D1 体积/EINVAL 未落盘 | sizes.json、probe_jemalloc.json、probe_mimalloc.json(round3) |
| D3 E5 零离散度 | 表 11 附 P25–P75 + 逐 rep 注记;E5P 表 11b 直接给出逐 rep 值 |
| D3 RR@5s 双峰成因 | E5P 实验解答:压力状态调制(§5.4 观察 1/5) |
| C3 预热协议 | bench.c 全模式 1M 预热 + round3 全量重测 + §4.3 声明更新 |
| B1/C4 mimalloc 16K 页未验证 | _mi_os_page_size()=16384 落盘(probe_mimalloc.json) |
| C1 brew 编译选项 | §10.3 附录(brew cat 摘录) |
| A2 目录 / A3 表编号 / A4 定义 | 目录 + 表 1–23 编号 + "稳态开销"严格定义(§4.2) |
| A3 E5 曲线图 | assets/e5_return_curves.svg(8 曲线) |
| E1 归因修正 | "8 线程瓶颈=带宽"改为异构核解释(§5.2/§7.1);新增 XNU 源码证据(§10.5) |
| E3 平台外推 | iOS 链接期断言移入 §9.1 表(含依据) |
| E4 版本边界 | 表 21 标注版本边界行 |
| B2 tcmalloc 旧版尝试 | 环境不可行(GitHub 不通,brew 仅 2.18.1),维持降档;§8.3 真机 PoC 清单保留 |
评委 1(A):86/100(A14 B14 C12 D18.5 E17.5 F10;D 维 74% 触发一票否决)
- 全量复算 269 个 JSON:E1–E6 核心数据链 100% 精确;
- 发现 E4P 数据归因错误(三重证据:JSON
alloc:"system"自识别、脚本调用$BIN/bench、objects 同种子对齐)——E4P 文件名为 mimalloc 实为 system 数据,污染表 10/16/20/21 与"条件敏感"叙事链; - 压力实验条件不可溯源(文档 7GB / 脚本 4GB / README 7GB 三方矛盾;r11-13 无脚本覆盖;free% 未落盘);
- 表 11 @5s/@10s 括号 min–max 冒充 P25–P75;"30 组"实为 25 组;§3 编号残留 2.3。
评委 2(B):85.5/100(A12.5 B14 C12 D20 E17 F10;各维 ≥80% 但总分 <90)
- 30+ 项抽查零数字错误,"数值可信度是我复核过的文档中最高的";
- E4 全文无离散度披露:system EMR 逐 rep 0.573–0.815(开销 +23%~+74%)被中位数 0.799 掩盖;
- 独立确认 E5P 条件不可溯源 + 计数错误;建议补 system E4P(E4 方差最大的恰是 system);
- 建议披露"r1–3 实为加压未遂的 4GB hog 组"这一事实(如实写反而更强)。
v2 平均分:85.75 / 100(86 + 85.5)。目标 ≥80 达成;通过线 ≥90 未达(A 判 D 维 74% 一票否决,B 判各维达标但总分不足)。
Round 4 → 文档 v3
过程事件(诚实性记录):
- E4P 归因错误确认与修复:v2 评委 A 溯源发现 E4P 三文件实为 system 数据(三重证据);错误根源:初版 run_pressure_test.sh 的 E4P 段误用
$BIN/bench却给文件命名 mimalloc。处置:作废归档(pressure/superseded/+ README)→ bench_mi 真测 mimalloc + bench system 对照各 5 reps(alloc 字段逐一校验)→ 真实结论与 v2 叙事相反:mimalloc E4 压力不敏感(E4P 0.881 ≈ 无压 0.882),"条件敏感 0.936→0.882→0.81"链条的第三点本就是 system 数据;round1→round3 漂移(0.936→0.882)成因未定,如实降级为"未解释的跨轮漂移"; - E5P 时间窗口混杂的发现与排除:重测时 jemalloc 一批 5 reps 出现"归还"(RR 0.95+,1.6s 精确起降)——溯源发现该批恰逢 hog 初载、swap 快速填充期(swap 6.5/7GB),是内核换出脏页的伪影而非分配器归还;设计交错对照协议(je/mi 交替 r41–45 同窗口)验证:稳定压力下两者均 0.000——排除窗口混杂。伪影本身升华为平台洞察(macOS swap 极端期能压出第三方缓存,iOS 无 swap 无此出口);
- E5P 首测的 jemalloc/mimalloc 文件(内部 rep 22/23、31–33 与文件名 r1–3 不符)整体作废、干净编号重测(superseded/README 记录);
- 首版固化脚本 hog2.c 缺 unistd.h 构建失败(5 分钟内发现重跑);脚本 MANIFEST 生成段有乱码字符报错(数据无影响,清单手工补齐)。
v3 修复对照表(v2 Gap → v3 动作):
| v2 扣分项 | v3 修复 |
|---|---|
| D1 −4(A) E4P 归因错误 | 作废 + 双配置重测(表 10 注 1/注 2 撤回声明)+ 全部下游表格/叙事修正 |
| D1/C4 压力条件不可溯源 | 协议固化:hog2.c 入库、free_pct.log 落盘、MANIFEST.md 逐文件条件、run_pressure_test.sh 参数化可复现 |
| D3 −2(B) E4 零离散度 | aggregate.py 输出 EMR IQR + 逐 rep;表 10 全披露(system 0.573–0.815) |
| C4 复现链断裂 | 同上;交错协议本身入脚本 |
| E1 −1.5 推理链断裂 | 条件敏感叙事撤回(基于真实数据重写);异构核归因降级为"中"并注明未做 affinity 对照 |
| C3/E5P reps 不足 | 全部 5 reps/配置 + 交错对照 10 reps |
| D2 −1.5(B) E4P 单配置 | 补 system E4P(发现其 rep 方差大——本身成为观察 2) |
| 表 11 口径/计数/编号/图注/KiB | 全部修正(min–max 标注、25 组、3.1、图 1、kB 十进制) |
| C2 E6 口径偏离 | §5.7 加声明(RSS 外部采样 vs footprint 的偏离 + tuned 不入 E6 理由) |
评委 1:{{FILL: v3}} 评委 2:{{FILL: v3}}
v3 平均分:{{FILL}}
(v2→v3 的 Gap 分析与修复动作已并入上方 Round 4 修复对照表;旧"Round 3 → v3"模板占位段已删除——Round 4 即 v3 轮。)