From 17bc9a55530de875598c190b4fff8f8683ca9f6d Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sun, 27 Sep 2026 18:30:09 +0800 Subject: [PATCH] =?UTF-8?q?docs(stress):=20abtest=20=E8=A1=A5=E3=80=8C?= =?UTF-8?q?=E8=B7=A8=E7=89=88=E6=9C=AC=E5=AF=B9=E6=AF=94=E7=9A=84=E9=99=B7?= =?UTF-8?q?=E9=98=B1=E3=80=8D=E2=80=94=E2=80=94=20=E8=80=81=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=AF=E8=83=BD=E5=8F=AA=E6=98=AF=E6=B2=A1=E5=B9=B2?= =?UTF-8?q?=E6=B4=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 脚本原本只写「加速比 = 基线延迟 / 新版延迟」。实测发现跨版本对比时这个 数字**没有意义**: N 老版本 中位/处理数 新版本 中位/处理数 算出的"加速" 2 0.273s / 0 个 0.480s / 2 个 0.57x 4 0.273s / 0 个 0.492s / 4 个 0.55x 8 0.273s / 0 个 0.512s / 8 个 0.53x "老版本更快"是假的 —— 它只是没干活:适配器缺 stream_index 透传 ⇒ 多个 分片并到槽 0 ⇒ argsRaw 混拼 ⇒ 每个工具报"参数不是合法 JSON"而一个都没 真跑。 ★ 跨版本能比的硬指标是**处理数**;耗时对比只在新版内部做(混一个非并发安全 工具触发整批降级)才有意义 —— 那种对照下 N=12 时加速 5.72×。 顺带记下:老版本的内核分桶逻辑其实完整(`idx := tc.StreamIndex` + `accs[idx]`, 来自 2026-08-26 的 ddef195),缺的只是适配器那一个字段;而生产在当天 15:46 就手工补上了,比该提交(16:10)早 32 分钟。 --- scripts/kernel-stress/abtest.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scripts/kernel-stress/abtest.py b/scripts/kernel-stress/abtest.py index 2377a81..d08a756 100644 --- a/scripts/kernel-stress/abtest.py +++ b/scripts/kernel-stress/abtest.py @@ -8,6 +8,24 @@ 1. **平均轮次延迟** —— 从发输入到收到最终回复的墙钟时间。 并发的理论收益 = 单工具耗时 × (N-1):串行要 N×t,并发只要约 1×t。 2. **加速比** = 基线延迟 / 新版延迟。 + +★ 用这个脚本做**跨版本**对比时,先看"处理了几个工具",别看加速比。 + +实测:老版本(28b42bc,批内多 tool_call 但串行)的适配器缺 +`stream_index` 透传 ⇒ 多个分片并到槽 0 ⇒ argsRaw 混拼 ⇒ +每个工具报「参数不是合法 JSON」而**一个都没真跑**: + + N 老版本 中位/处理数 新版本 中位/处理数 算出的"加速" + 2 0.273s / 0 个 0.480s / 2 个 0.57x ← 无意义 + 4 0.273s / 0 个 0.492s / 4 个 0.55x + 8 0.273s / 0 个 0.512s / 8 个 0.53x + +"老版本更快"是假的 —— 它只是没干活。**跨版本能比的硬指标是处理数**; +耗时对比只在新版内部做(混一个非并发安全工具触发整批降级)才有意义。 + +老版本的内核分桶逻辑其实完整(`idx := tc.StreamIndex` + `accs[idx]`, +来自 2026-08-26 的 ddef195),缺的只是适配器那一个字段 —— 而生产在 +当天 15:46 就手工补上了,比该提交(16:10)早 32 分钟。 3. **工具消息顺序** —— 内核声明「并发执行但按**声明序**落消息」, 而 mock 故意让完成顺序与声明序**相反**(索引越大 sleep 越短)。 所以:若响应里的工具顺序是 0,1,2,…,说明按声明序落对了;