Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

报告 004 · 控制通路、取消与资源占用

文档索引 · 当前设计 · 研究问题

日期:2026-09-19。证据层次:确定性的受限调度模型。执行了 24 组队列场景、9 组流式场景和 2 组取消额度场景;没有运行真实语音、模型推理、操作系统抢占或 GPU 负载。

1. 问题与共同条件

本实验检验“给停止消息高优先级或单独队列,就能及时停止”的隐含前提,并区分取消通知、播放约束和资源回收。

协议在模型执行前写入实验说明。队列对照共同使用 2 个相同执行者、6 个等待位置、不可抢占作业。保留方案限制普通作业最多占 5 个等待位置;专用方案进一步将两个执行者分为一个普通、一个控制,普通工作不能借用控制资源。总资源数量相同,使用约束不同。

两项长作业在 t=0 到达,2 或 6 项短作业在 t=1 到达,控制消息在 t=2 到达。短作业耗时 10,控制处理耗时 1,长作业时长分别为 10、40、100。控制完成表示模型中的处理任务结束,不等于设备已经停止。

所有时间均为抽象 tick,不能换算成真实毫秒。只含一条控制消息,不测试控制洪泛、控制任务之间的互斥或共享锁。

2. 队列未满:优先级仍受运行中作业约束

当 t=1 只有 2 项短作业时,所有方案接纳控制消息:

长作业时长共享 FIFO 的控制延迟共享优先级优先级 + 保留队列位置专用控制执行者
1019991
404939391
10010999991

延迟从 t=2 到控制任务完成计算。长作业时长 100 时,共享优先级在 t=100 才开始控制任务,排队等待 98,执行 1,共 99。优先级让控制任务跳过等待中的短作业,却不能抢占正在占用执行者的长作业。

专用方案的普通任务也付出代价:长作业时长 100 时,其他方案在 t=110/111 完成全部 4 项普通任务,专用方案到 t=220 才完成;t=200 时仅完成两项长作业。低控制延迟不是免费增加了一份执行资源。

3. 队列占满:接纳与执行是两个问题

以下固定长作业时长 100,t=1 到达 6 项短作业,普通任务总 offered 数为 8:

策略控制是否接纳控制开始/完成控制延迟普通接纳/拒绝t≤200 普通完成普通全部完成时刻
共享 FIFO否——8/08130
共享优先级否——8/08130
优先级 + 保留队列位置是100/101997/17130
专用控制执行者 + 保留位置是2/316/22240

前两组在 t=2 直接拒绝控制消息,故延迟是缺失而不是 0。共享优先级没有包含驱逐普通任务或额外控制接纳机制;若另加这些机制,需要单独验证,不能归功于优先级本身。

保留一个队列位置解决本例的接纳问题,但仍等到 t=100。专用方案的第二个长作业从 t=0 开始就在普通队列等待,因而会比共享保留方案多拒绝一个短作业。这里将所有拒绝显式计入,避免只比较成功控制消息的延迟。

专用执行者假设其执行资源、锁和完成路径确实独立;真实系统中“另起 goroutine”或“另建队列”不自动满足这些前提。本实验没有证明应永久闲置一个 CPU/GPU,也没有比较有界抢占、资源借用与及时归还等替代策略。

4. 取消后,入口过滤仍会漏掉已缓存片段

三组都在取消时立即停止当前片段、将轮次从 1 推进到 2;提供者不配合取消。旧缓存片段已在取消前通过入口,迟到片段在取消后到达,另有一个新轮次片段。

在取消时刻 2、时刻 5,以及“取消与片段在同 tick,取消先发生”三个固定场景中,计数一致:

策略取消后旧轮次实际播放量新轮次播放量入口丢弃播放边界丢弃
只取消当前播放2100
再加入口轮次过滤1110
再加播放边界轮次复核0111

每个计数单位是一个 tick 的播放,本例两个待播放旧片段各长 1。入口过滤丢弃迟到片段,但已缓存片段仍播放;播放边界复核也拒绝已缓存旧片段,同时保留新输出。

取消前已经播放的 2 或 5 tick 保留为已发生事实。本例的零迟到播放依赖两个显式条件:取消能立即停止当前片段;读取当前轮次与开始播放在同一个 owner 的顺序中完成。真实音频设备的不可撤销缓冲、停止确认延迟、跨线程竞争和跨重启身份均未验证。

5. 本地取消不应被当作远端资源释放

额度为 1,旧工作 t=0~10 持续运行并忽略 t=2 的本地取消,新工作 t=3 到达、需要 2 tick。t=10 才收到可靠的旧工作完成证据:

额度策略远端同时执行峰值超额 tick新工作开始/完成新工作等待
本地取消即归还223/50
直到完成证据才归还1010/127

保留占用避免本例的额度穿透,代价是新工作多等 7 tick。如果提供者永久失联,本模型没有自动解决方案;需记录不明责任及明确的核对/管理策略,不能虚构停止确认,也不能将本例等待时长当作线上上界。

6. 设计含义

  • 将控制保障分成接纳、调度、执行资源和实际设备停止四层;保留队列容量只回答第一层。
  • 暂保留专用控制路径为候选,同时研究有界不可抢占段及资源分配;没有数据支持固定线程数、设备数或硬实时延迟。
  • 当前轮次在实际输出 owner 的播放边界复核;入口过滤用于提前丢弃,不能替代最终检查。停止当前播放与阻止以后旧片段要一起考虑。
  • 取消请求、本地停止等待、远端停止证据、资源清理分别记录;保留未确认工作的实际占用责任。

本实验没有评价普通任务的认知质量、任务间公平性、控制负载高峰、声卡缓冲或现实安全停止性能。

运行:python3 experiments/realtime-control/model.py。Python 3.14.7,仅标准库,无网络和随机输入。

脚本 SHA-256:eeb3c006e1cc707e02253c4c22eccd5f7d6d0ace8a3c1cce348fab707793e831。原始结果同时包含预登记协议哈希。

首次执行即通过所有固定场景、作业守恒、等待容量、执行者占用、时间计算和播放量断言,无失败重跑。断言验证该有限模型的自洽性,不证明真实调度器或设备满足其假设。

数据可用性

本报告公开实验条件、汇总统计和失败分析。原始输入、脚本及逐次运行记录未随报告发布,因此不能仅凭本文独立复现实验。