Skip to content

test(perf): 为分配门禁保留逐样本调度诊断 - #772

Merged
SunSi12138 merged 1 commit into
devfrom
fix/203-allocation-gate-diagnostics
Oct 3, 2026
Merged

SunSi12138 merged 1 commit into
devfrom
fix/203-allocation-gate-diagnostics

Conversation

@SunSi12138

Copy link
Copy Markdown
Owner

#770 的 Release Gate 出现同一源码 tree、同一 .NET 10.0.12 下的 c8 分配稳定性失败:中位数 551.188 B/op 低于 650,但第四样本使 spread 达到 102.695,高于 90。旧报告缺少每样本耗时、GC 和线程池统计,无法证明具体责任。原始失败及对照 Fast 的报告均已保留;本 PR 只补齐诊断能力,不声称根因已修复。

新增每样本计量前后 UTC/Stopwatch、GC 累计次数及 ThreadPool 状态,报告头记录处理器数、OS、架构和 Stopwatch 频率。诊断采集位于原分配窗口之外,快照存到预先创建的 completion counter;反射核验原版与候选的 MeasureAsync 状态机十个字段一致,避免诊断扩大计量窗口内的状态机分配。补充文档说明非原子快照及 trace 的解释边界。

预算、预热、操作数、五个样本、完成数校验和 median/spread 通过条件均保持不变;生产运行时、API 和 wire 不变。重新验证的理由是取得原来缺失的证据,不是反复重跑到通过。

验证:Release 构建零警告/错误,格式、可维护性、diff 检查通过;harness self-test 通过。隔离 .NET 10.0.12 完整无 trace 诊断四项通过,c8 median 457.570 / spread 12.594;随后仅增加报告头环境字段并重新构建、自检及验证负控。最终候选额外注入 512 B/op 的 c8 负控按预期失败,五样本全部 4096/4096,诊断时间与分母核验通过。不同主机的本地通过不能替代 #770 的失败或最终正式 Release Gate。独立 trace 仅用于诊断,未用作正式性能证书。

失败门禁:37089229492。关联 Kan #203 / SharpLink #770。

@SunSi12138
SunSi12138 merged commit b9b7dd5 into dev Oct 3, 2026
7 checks passed
@SunSi12138
SunSi12138 deleted the fix/203-allocation-gate-diagnostics branch October 3, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant