mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-04 00:03:59 +00:00
feat(scheduler): M5 饥饿防护(抢占计数提升有效级 + 抢占冷却)
设计依据 docs/zh/input-scheduler-design.md §9、§11.5(G1/G2)。 - Task 增加 PreemptCount / LastPreemptAt;effectiveLevel(t) = min(L4, Level + min(PreemptCount, 2)):被抢占越多越“值钱”, 逐步追上抢占它的流,但封顶 L4 因而抢不过真正的紧急输入 - 选择函数 taskBefore 改用有效级;requestPreempt 与 preemptGrantedFor 同样以有效级比较 - 抢占冷却 preemptCooldown=2s:刚被抢占的任务期内不再被抢占, 避免同一任务被反复打断到永不完结 - 新增 scheduler_starvation_test.go 4 项:提升与封顶、冷却期内不得再抢占、 提升后同级不得抢占而更高可、选择函数确实用有效级 - 验收:agent 全量 + -race;全仓 build/vet 通过
This commit is contained in:
@ -61,7 +61,7 @@ func TestPreempt_DeferredDuringToolExec(t *testing.T) {
|
||||
t.Fatal("L4 应 arm 让位信号")
|
||||
}
|
||||
// 关键断言:信号已 arm,但任务仍在工具里 —— 绝不能挂起。
|
||||
if !a.sched.preemptGrantedFor(LevelBackground) {
|
||||
if !a.sched.preemptGrantedFor() {
|
||||
t.Fatal("让位信号应已 arm")
|
||||
}
|
||||
if a.DumpScheduler().Running == nil {
|
||||
|
||||
Reference in New Issue
Block a user