JianFeeeee
23ed997b04
test(proc): Publish 延迟判据改为自校准噪声基准 —— 修 CI 误报
CI 报红:`TestStreaming_PublishLatencyFlatAcrossSubscribers`
1 个消费者:6.16615ms(均摊 2.055µs/次)
8 个消费者:30.466442ms(均摊 10.155µs/次)
→ 比值 4.9 越界(阈值 4),报"疑似线性恶化"
而本机连跑 3 次全绿。
## 根因:不是被测逻辑,是分母量级 + 单次采样的抖动
单次 Publish 真实成本只有 0.4~2µs。这个量级下 CI 共享机器上任何一次
抢不到 CPU(20~30ms 很常见)都会把比值放大几倍,而它跟"订阅者数是否
线性恶化"毫无关系。原判据各只测一次,一次抖动就定生死。
## 为什么不用绝对时间门槛(我先试过,是错的方向)
本机 423ns/次、CI 2µs/次,量级差 5 倍。任何固定阈值要么在本机永远
跳过(判据失效、等于删掉测试),要么在 CI 永远误报。
## 改为自校准:同配置两段之差即噪声水平
`measure` 内部把 rounds 拆成前后两段,分别计时。同一配置、同一消费者、
同一机器——两段之间的差异只可能来自环境抖动,与机器快慢无关。
· 两段差异 > 2 倍 ⇒ 环境不可测,跳过比值判定(只记录)
· 否则照旧判比值 > 4 倍 ⇒ 红
## 为什么不把 measure 调两次(也是我先试过、错的方向)
`EvtConsumer.Stop()` 只关自己的 stop channel,而 Run 正阻塞在
`evtfd.Read`——后续没有 notify 唤醒就不会返回,`wg.Wait` 于是永久
挂住。实测连续调用直接把测试拖到 240s/360s 超时。
分段测量在**同一次 consumer 生命周期内**完成,不碰这个问题。
## 判据仍有识别能力
变异验证:在 8 订阅者的计时区间内人为加入 7 倍写开销(模拟 O(N) 广播),
比值会达到 8 倍量级,远超 2 倍噪声门与 4 倍阈值 ⇒ 仍然判红。
2026-10-25 22:28:22 +08:00
..
2026-10-17 19:18:24 +08:00
2026-10-25 10:10:21 +08:00
2026-09-10 18:54:36 +08:00
2026-10-25 10:10:21 +08:00
2026-10-23 15:51:02 +08:00
2026-10-17 19:18:24 +08:00
2026-10-25 10:10:21 +08:00
2026-10-25 10:10:21 +08:00
2026-10-25 10:10:21 +08:00
2026-10-25 10:10:21 +08:00
2026-10-25 10:10:21 +08:00
2026-10-17 19:18:24 +08:00
2026-10-25 10:10:21 +08:00
2026-09-11 20:31:50 +08:00
2026-09-14 23:14:38 +08:00
2026-10-23 15:51:02 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 10:10:21 +08:00
2026-10-23 15:51:02 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 15:55:26 +08:00
2026-10-25 10:10:21 +08:00
2026-10-23 15:51:02 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 18:25:37 +08:00
2026-09-02 19:07:14 +08:00
2026-09-02 19:07:14 +08:00
2026-09-02 19:07:14 +08:00
2026-09-02 19:07:14 +08:00
2026-09-10 17:56:54 +08:00
2026-09-10 17:56:54 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 10:10:21 +08:00
2026-10-17 19:18:24 +08:00
2026-10-23 15:51:02 +08:00
2026-09-28 10:00:10 +08:00
2026-10-23 15:51:02 +08:00
2026-10-17 19:18:24 +08:00
2026-10-23 15:51:02 +08:00
2026-10-23 15:51:02 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 15:55:26 +08:00
2026-10-17 19:18:24 +08:00
2026-10-08 07:56:51 +08:00
2026-10-21 12:17:19 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 15:55:26 +08:00
2026-10-23 15:51:02 +08:00
2026-09-03 12:37:58 +08:00
2026-09-03 12:37:58 +08:00
2026-10-25 10:10:21 +08:00
2026-10-25 15:55:26 +08:00
2026-10-25 10:10:21 +08:00
2026-09-14 23:14:38 +08:00
2026-10-23 15:51:02 +08:00
2026-09-10 10:21:50 +08:00
2026-09-10 10:21:50 +08:00
2026-09-10 10:21:50 +08:00
2026-10-25 15:55:26 +08:00
2026-10-23 15:51:02 +08:00
2026-10-22 20:49:44 +08:00
2026-09-02 13:03:57 +08:00
2026-09-02 13:03:57 +08:00
2026-09-02 19:07:14 +08:00
2026-10-22 20:49:44 +08:00
2026-10-23 15:51:02 +08:00
2026-09-10 11:42:22 +08:00
2026-09-11 20:31:50 +08:00
2026-10-23 15:51:02 +08:00
2026-10-25 15:55:26 +08:00
2026-10-25 22:28:22 +08:00
2026-10-25 15:55:26 +08:00
2026-10-13 09:39:34 +08:00
2026-09-02 10:41:18 +08:00