[perf stack continuation 7] 内联解压后复用已校验 metadata,省去重复解析和分配 - #640
Merged
Merged
Conversation
SunSi12138
changed the base branch from
perf/stack4-06-dto-construction-20260909
to
dev
September 9, 2026 13:32
SunSi12138
marked this pull request as ready for review
September 9, 2026 13:34
Owner
Author
|
针对“无 metadata 是默认路径,不应为可选优化付出代价”的反馈,已补充保守修订:生产提交 2f7c7d8,测试导入补全 2be0af9。基于当时最新的 80e6f6b 追加,保留你推进栈时的更新,没有强推、改 base 或自动合并。
重新验证:最终 Release 0 警告/0 错误;按仓库风格关闭隐式 using 的定向测试宿主,默认硬件与禁用 intrinsics 分别 28/28 通过(13 envelope + 9 compression + 6 新增)。包含实际 Session 解压及带/不带预算、边界/分段/改写;不是完整 Unary/Oneway 准入释放竞争集成回归。 性能结论严格区分:历史 +5.12% 是“带 TimeBudget 的两阶段解包”控制,不是默认 Add 的 QPS 回退,两边都调用原 Read。此次重复的进程间、同进程及 CPU-clock 对照均出现非平稳性。曾尝试把无 metadata 也改为前缀重绑,初始正结果未在所有复测中保持,所以该更激进方案已经撤出,任何初期 −22%/−6% 不能算作本提交的效果。 本次完成的是默认路径的代码隔离和原释放顺序恢复;没有新的最终版本 TCP QPS/p99 验收,不能声称已定量消除历史 5.12%。相关说明已经追加进 PR 内文档,原负结果保留。 |
SunSi12138
marked this pull request as draft
September 9, 2026 13:48
SunSi12138
marked this pull request as ready for review
September 9, 2026 13:48
SunSi12138
marked this pull request as draft
September 9, 2026 14:52
SunSi12138
marked this pull request as ready for review
September 9, 2026 14:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
堆叠位置
接在 #639 后,审查顺序为 #633 → #634 → #635 → #636 → #638 → #639 → 本 PR。固定父提交
71004591d9b7764abba2dde67bdbf66d0682d713,不修改 #605、dev/main 或此前分支,不自动合并。仅包含已认可的 metadata 复用候选,没有加入普通 Span 解包或持久异步解码实验。改动与所有权
内联压缩 Unary/Oneway 原来在解压前后各解析一次相同 envelope,重复创建 metadata。新增
ReadDecoded:首次严格解析照常完成;仅在协商了 Metadata、HasMetadata 存在、前后完整前缀连续且逐字节相同、metadata 长度仍满足当前限额时,复用首次不可变 metadata 和精确 RpcDeadline,把 Arguments 重新绑定到 decoded 存储。前缀变化、截断、跨段、能力或限额不满足均回退原解析器。保留第一次验证、解压检查、准入、协议限额和错误语义。比较/重新绑定先于 retained encoded owner.Dispose 与 decode permit.CompleteDecode,确保两个输入所有者仍然有效。持久异步解码路径不改,禁止借序列视图跨 await 延长其输入生命周期。
前一轮组件证据,不是新的 TCP 成绩
相同 probe、Client/Runtime/Abstractions,只替换 Server;SDK 10.0.400/runtime 10.0.11,Release,默认分层 JIT,一个 ABBA。包含首次解析和第二次解析/复用,不包含实际解压、业务、发送或网络。
无 metadata 控制两边都调用原 Read、不进入新复用方法,但约 5.12% 的实测回退仍保留;不能证明只是 JIT/布局/噪声,也不能声称全场景非劣。省掉第二份 metadata 并非整个 RPC 分配减半,更不能从普通 Unary 的 B/RPC 减掉 880 B。这是当前严格实现的增量证据;重大热路径仍以 v1.1.1 端到端对照为主。
本次提交验证
三个生产文件 SHA256 与前一轮实际受测候选完全一致。新增仓库
DecodedRequestMetadataReuseTests,将原独立 2,924 案例差分语料纳入 TUnit,并补充未协商 Metadata 的回退测试。覆盖截断、所有切分位置、逐字节前缀改写、当前限额收紧、引用复用、原 deadline 保留、decoded 参数别名。本地小型 TUnit 宿主编译同一仓库测试源:13 项现有 envelope 用例+2 项新增用例,15/15 两次通过,未跳过用例。最后一次 Release 构建 0 警告/0 错误。2,924 是单个测试内部的语料检查数,不是测试实例数;初次测试宿主缺 namespace import 的编译失败已保留,修正导入后通过,没有修改生产补丁或放宽超时。
发布 Actions #34352258565 只核对 patch SHA256 和完整 tree 后创建新分支;tree
52c82122e62de832aa9a39b63411c1563a1b5e80与本地提交完全相同。SDK 覆盖、发布工作流和测试宿主没有进入本 PR。首次发布的传输文本校验失败在写入候选分支前被拦住;修正后仍通过相同哈希检查。没有新长压测或全仓 CI 结论。真实内联压缩分发的异常、背压、lease 释放集成回归,以及普通无 metadata 组合性能仍待验证;草稿 PR 不代表发行验收通过。
说明文件:
doc/performance-audit/stack4/07-compressed-metadata-reuse.md。