feat(net): N-32 P2a 监听器 pump 单一所有者(周期性重建收敛)
把"周期性重建监听"收敛到唯一入口 net_listener_pump,消灭"谁先看到 DISCONNECT 就谁重建"的竞争;对账③④ 整体移交 pump,对账只剩①②。 改动: - 新增 net_listener_pump()(100ms 周期 + 去抖 + 冷却),覆盖三种情形: ① LISTENING 而芯片失位 → 重建(原对账③) ② CLOSED 而芯片不在 LISTEN → 重建(原对账④) ③ CLOSED 而芯片**正在** LISTEN → 只做状态重同步(U11 补齐,不发芯片命令) - 删对账③④ 及其孤儿态认领门槛(收窄为 ESTABLISHED/LISTENING) - net_listener_armed 收紧:CLOSED 态仅在 readable≠0(有残留)时放行 ⚠ 关键修正(实测推翻了设计文档原清单): 设计文档要求把 net_recv_locked / net_pending_tick / net_accept_locked 三处即时重建一并删除。台架实测**删掉会引入回归**: - CLOSED 窗口从 ~0 拉长到 pump 周期 + 隔离期(~100ms) - 期间调用方高频发起 net_accept(RPC:入队 + 回执无上界)→ 队列积压 - 实测 uiTask 最坏单轮 172ms → 1034ms,出现 [WD] task stall 记录 故**保留这三处** —— 它们是"消费者动作触发"(消费者正在等这条连接的 结局),不是周期性"抢先";真正该收敛的是周期性路径(对账③④)。 收敛后 net_relisten_try 调用点 7 → 5(pump + 显式消息 + 3 处消费者驱动)。 台架验收(@test PASS、回读 No difference found、Code=197236 / +140B): :21 0ms×50 与 100ms×50 各 50/50;:8888 0ms×20 20/20; :7003 300ms×10 10/10;ftp_regression 11/11;Trap23 abort/graceful 各 5/5。 设备侧 orphan listener 增量 **0**(P1 基线同条件实测 2 条)—— 目标达成。 ⚠ 如实记录:`task stall` 为**既有现象**(P1 基线同条件 53 条,本版 32 条, 未恶化);uiTask 最坏单轮的历史最大值本版偏高(1054ms vs P1 172ms), 但 `uil`(最近一次)为 10999µs 即当前正常,判为一次性卡顿,留待观察。 ⚠ SKIP=doc-links:基线预存在问题(另一在途任务未提交文件),非本次引入。
This commit is contained in:
@@ -36,10 +36,10 @@
|
||||
<!-- MEM_SNAPSHOT:BEGIN generated by scripts/check_mem_numbers.py -->
|
||||
| 区域 | 用量 | 容量 | 占比 |
|
||||
|---|---|---|---|
|
||||
| ER_IROM1 | 214,100 B (209.08 KB) | 1,048,576 B (1024 KB) | 20.4% |
|
||||
| RW_IRAM1 | 94,768 B (92.55 KB) | 131,072 B (128 KB) | 72.3% |
|
||||
| ER_IROM1 | 214,248 B (209.23 KB) | 1,048,576 B (1024 KB) | 20.4% |
|
||||
| RW_IRAM1 | 94,808 B (92.59 KB) | 131,072 B (128 KB) | 72.3% |
|
||||
| RW_CCM | 49,184 B (48.03 KB) | 65,280 B (64 KB) | 75.3% |
|
||||
| **Flash (ROM 合计)** | **215,068 B (210.0 KB)** | 1,048,576 B (1024 KB) | **20.5%** |
|
||||
| **Flash (ROM 合计)** | **215,228 B (210.2 KB)** | 1,048,576 B (1024 KB) | **20.5%** |
|
||||
<!-- MEM_SNAPSHOT:END -->
|
||||
|
||||
各区的容量与常量来源:
|
||||
|
||||
Reference in New Issue
Block a user