判定要知道增量开没开,否则会推荐已经在做的事

上线 9 小时后实测踩到:清空 326ms 触发「币数 > 核数」那一支,于是继续输出
「唯一出路是走增量」——而增量已经生效。同一个分支在增量前后给同一个答案,
等于没有判定。

现在分开:增量未开就指向开增量;已开则指出单币 102ms 里 chan 构建只剩约
22ms,其余是 build_htf_zones / find_fast_bsp3 / attach_htf_context,要继续
压得改这三个或减币。顺带把「宽裕」阈值从 300 提到 400ms——清空 326ms 在
数据到达中位 347~558ms 面前不是瓶颈。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jack
2026-08-28 15:24:31 +08:00
co-authored by Cursor
parent 545fcc7c77
commit 0745e73b4f
+13 -6
View File
@@ -76,6 +76,8 @@ from lib.shadow_budget import LAG_ALARM_MS, LAG_WINDOW, lag_healthy
SITE = os.environ.get("SHADOW_SITE") or socket.gethostname() SITE = os.environ.get("SHADOW_SITE") or socket.gethostname()
# 判「加 worker 有没有用」必须知道核数:CPU 密集的活,worker 超过核数不增吞吐 # 判「加 worker 有没有用」必须知道核数:CPU 密集的活,worker 超过核数不增吞吐
CORES = os.cpu_count() or 1 CORES = os.cpu_count() or 1
# 判定要知道增量开没开,否则增量已生效时还会继续推荐「走增量」
INCR_ON = os.environ.get("SHADOW_INCR", "1") not in ("0", "", "false")
# 少于这么多根就不送去算。缠论要先有分型再有笔再有中枢,几十根出不来中枢, # 少于这么多根就不送去算。缠论要先有分型再有笔再有中枢,几十根出不来中枢,
# 送过去只会白占一个计算槽 # 送过去只会白占一个计算槽
MIN_BARS = 200 MIN_BARS = 200
@@ -838,17 +840,22 @@ class Shadow:
""" """
if not np.isfinite(clear): if not np.isfinite(clear):
return "样本不足,暂不判定" return "样本不足,暂不判定"
if clear < 300: if clear < 400:
return f"清空 {clear:.0f}ms,宽裕,无需优化" return f"清空 {clear:.0f}ms,宽裕,无需优化"
if self.workers < CORES and q > i: if self.workers < CORES and q > i:
return (f"排队为主且还有 {CORES - self.workers} 个空闲核 → " return (f"排队为主且还有 {CORES - self.workers} 个空闲核 → "
f"--workers 加到 {CORES}") f"--workers 加到 {CORES}")
if len(SYMS) > CORES: if len(SYMS) <= CORES:
per = clear / max(len(SYMS) / max(self.workers, 1), 1) return f"清空 {clear:.0f}ms 偏高,但币数未超核数,先查别的争抢"
# 币数超核数:加 worker 不增吞吐,只能压单币耗时。但要看增量开没开,
# 否则会在增量已生效时继续推荐「走增量」——上线后实测踩到过
if not INCR_ON:
return (f"币数 {len(SYMS)} > 核数 {CORES},加 worker 无用(CPU 密集)" return (f"币数 {len(SYMS)} > 核数 {CORES},加 worker 无用(CPU 密集)"
f"唯一出路是压单币耗时 {per:.0f}ms → 走增量 " f"。压单币耗时 → 开 SHADOW_INCR=1 走增量(实测 3.56x")
f"init_stream/append_barHANDOFF §5.5,实测约 3.7x") return (f"币数 {len(SYMS)} > 核数 {CORES},且增量已生效。单币 {i:.0f}ms "
return f"清空 {clear:.0f}ms 偏高,但币数未超核数,先查是否有别的争抢" f"里 chan 构建仅约 22ms,其余是 build_htf_zones / "
f"find_fast_bsp3 / attach_htf_context —— 要继续压得改这三个,"
f"或减币")
async def run(self) -> None: async def run(self) -> None:
await self.start() await self.start()